From ef45092f3dbec20d2227dad0e0d8a863568096f4 Mon Sep 17 00:00:00 2001 From: wancheng1990 <25022549@qq.com> Date: Tue, 23 Jul 2024 11:10:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97=E8=BE=93?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/public/decoder.js | 22 ++++++++--------- demo/public/decoder.js.map | 2 +- demo/public/dist.zip | Bin 535301 -> 534743 bytes demo/public/jessibuca.js | 20 +++++++++------- demo/public/jessibuca.js.map | 2 +- demo/public/pro/multi-demo.html | 41 +++++++++++++++++++++++++------- dist/decoder.js | 2 +- dist/jessibuca.js | 2 +- package.json | 2 +- rollup.config.js | 1 + src/constant/index.js | 2 ++ src/jessibuca.js | 4 +++- src/player/index.js | 3 ++- src/worker.js | 22 ++++++++--------- 14 files changed, 78 insertions(+), 47 deletions(-) diff --git a/demo/public/decoder.js b/demo/public/decoder.js index effca2b3..a1a9f2c8 100644 --- a/demo/public/decoder.js +++ b/demo/public/decoder.js @@ -7805,7 +7805,7 @@ decoder: new VideoDecoder({ output: function (videoFrame) { if (!wcsVideoDecoder.isEmitInfo) { - decoder$1.opt.debug && console.log('Jessibuca: [worker] Webcodecs Video Decoder initSize'); + decoder$1.opt.debug && console.log('Jb: [worker] Webcodecs Video Decoder initSize'); postMessage({ cmd: WORKER_CMD_TYPE.initVideo, w: videoFrame.codedWidth, @@ -7980,7 +7980,7 @@ const yData = decoder.HEAPU8.subarray(y, y + size); const uData = decoder.HEAPU8.subarray(u, u + qsize); const vData = decoder.HEAPU8.subarray(v, v + qsize); // if (isGreenYUV(Uint8Array.from(yData))) { - // decoder.opt.debug && console.log('Jessibuca: [worker]: draw offscreenCanvas is green yuv'); + // decoder.opt.debug && console.log('Jb: [worker]: draw offscreenCanvas is green yuv'); // return // } @@ -7998,7 +7998,7 @@ const yData = Uint8Array.from(decoder.HEAPU8.subarray(y, y + size)); const uData = Uint8Array.from(decoder.HEAPU8.subarray(u, u + qsize)); const vData = Uint8Array.from(decoder.HEAPU8.subarray(v, v + qsize)); // if (isGreenYUV(yData)) { - // decoder.opt.debug && console.log('Jessibuca: [worker]: draw is green yuv'); + // decoder.opt.debug && console.log('Jb: [worker]: draw is green yuv'); // return // } @@ -8042,14 +8042,14 @@ this.delay = -1; }, init: function () { - decoder$1.opt.debug && console.log('Jessibuca: [worker] init'); + decoder$1.opt.debug && console.log('Jb: [worker] init'); const _doDecode = data => { - // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode'); + // decoder.opt.debug && console.log('Jb: [worker]: _doDecode'); if (decoder$1.opt.useWCS && decoder$1.useOffscreen() && data.type === MEDIA_TYPE.video && wcsVideoDecoder.decode) { wcsVideoDecoder.decode(data.payload, data.ts); } else { - // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode wasm'); + // decoder.opt.debug && console.log('Jb: [worker]: _doDecode wasm'); data.decoder.decode(data.payload, data.ts); } }; @@ -8082,12 +8082,12 @@ var data = buffer[0]; if (this.getDelay(data.ts) === -1) { - // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1'); + // decoder.opt.debug && console.log('Jb: [worker]: common dumex delay is -1'); buffer.shift(); _doDecode(data); } else if (this.delay > decoder$1.opt.videoBuffer + decoder$1.opt.videoBufferDelay) { - // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`); + // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay}, set dropping is true`); this.resetDelay(); this.dropping = true; } else { @@ -8095,12 +8095,12 @@ data = buffer[0]; if (this.getDelay(data.ts) > decoder$1.opt.videoBuffer) { - // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`); + // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay}, decode`); buffer.shift(); _doDecode(data); } else { - // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`); + // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`); break; } } @@ -8112,7 +8112,7 @@ this.stopId = setInterval(loop, 10); }, close: function () { - decoder$1.opt.debug && console.log('Jessibuca: [worker]: close'); + decoder$1.opt.debug && console.log('Jb: [worker]: close'); clearInterval(this.stopId); this.stopId = null; audioDecoder.clear && audioDecoder.clear(); diff --git a/demo/public/decoder.js.map b/demo/public/decoder.js.map index 1ae01ca1..598a454a 100644 --- a/demo/public/decoder.js.map +++ b/demo/public/decoder.js.map @@ -1 +1 @@ -{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/worker.js"],"sourcesContent":["var Module=typeof Module!=\"undefined\"?Module:{};var Module={};Module.print=function(text){console.log(\"Jessibuca: [worker]:\",text)};Module.printErr=function(text){console.warn(\"Jessibuca: [worker]:\",text);postMessage({cmd:\"wasmError\",message:text})};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module[\"ENVIRONMENT\"]){throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\")}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e==\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(!(typeof process==\"object\"&&typeof require==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process==\"object\"&&typeof require===\"function\"||typeof window==\"object\"||typeof importScripts==\"function\")throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){let data;if(typeof readbuffer==\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data==\"object\");return data};readAsync=function readAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit==\"function\"){quit_=((status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)})}if(typeof print!=\"undefined\"){if(typeof console==\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!=\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(!(typeof window==\"object\"||typeof importScripts==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{throw new Error(\"environment detection error\")}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module[\"arguments\"])arguments_=Module[\"arguments\"];legacyModuleProp(\"arguments\",\"arguments_\");if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];legacyModuleProp(\"thisProgram\",\"thisProgram\");if(Module[\"quit\"])quit_=Module[\"quit\"];legacyModuleProp(\"quit\",\"quit_\");assert(typeof Module[\"memoryInitializerPrefixURL\"]==\"undefined\",\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"pthreadMainPrefixURL\"]==\"undefined\",\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"cdInitializerPrefixURL\"]==\"undefined\",\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"filePackagePrefixURL\"]==\"undefined\",\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"read\"]==\"undefined\",\"Module.read option was removed (modify read_ in JS)\");assert(typeof Module[\"readAsync\"]==\"undefined\",\"Module.readAsync option was removed (modify readAsync in JS)\");assert(typeof Module[\"readBinary\"]==\"undefined\",\"Module.readBinary option was removed (modify readBinary in JS)\");assert(typeof Module[\"setWindowTitle\"]==\"undefined\",\"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");assert(typeof Module[\"TOTAL_MEMORY\"]==\"undefined\",\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");legacyModuleProp(\"read\",\"read_\");legacyModuleProp(\"readAsync\",\"readAsync\");legacyModuleProp(\"readBinary\",\"readBinary\");legacyModuleProp(\"setWindowTitle\",\"setWindowTitle\");assert(!ENVIRONMENT_IS_SHELL,\"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.\");var POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function uleb128Encode(n){assert(n<16384);if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;iabort(unexportedMessage(sym,isFSSybol)))}}var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];legacyModuleProp(\"wasmBinary\",\"wasmBinary\");var noExitRuntime=Module[\"noExitRuntime\"]||true;legacyModuleProp(\"noExitRuntime\",\"noExitRuntime\");if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed\"+(text?\": \"+text:\"\"))}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!==\"array\",'Return type should not be \"array\".');if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce(\"Invalid Unicode code point 0x\"+u.toString(16)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite==\"number\",\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){assert(ptr%2==0,\"Pointer passed to UTF16ToString must be aligned to two bytes!\");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,\"Pointer passed to stringToUTF16 must be aligned to two bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){assert(ptr%4==0,\"Pointer passed to UTF32ToString must be aligned to four bytes!\");var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,\"Pointer passed to stringToUTF32 must be aligned to four bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){assert(array.length>=0,\"writeArrayToMemory array must have a length (should be an array or typed array)\");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var TOTAL_STACK=5242880;if(Module[\"TOTAL_STACK\"])assert(TOTAL_STACK===Module[\"TOTAL_STACK\"],\"the stack size can no longer be determined at runtime\");var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;legacyModuleProp(\"INITIAL_MEMORY\",\"INITIAL_MEMORY\");assert(INITIAL_MEMORY>=TOTAL_STACK,\"INITIAL_MEMORY should be larger than TOTAL_STACK, was \"+INITIAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");assert(typeof Int32Array!=\"undefined\"&&typeof Float64Array!==\"undefined\"&&Int32Array.prototype.subarray!=undefined&&Int32Array.prototype.set!=undefined,\"JS engine does not provide full typed array support\");assert(!Module[\"wasmMemory\"],\"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally\");assert(INITIAL_MEMORY==67108864,\"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically\");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);HEAP32[max>>2]=34821223;HEAP32[max+4>>2]=2310721022;HEAP32[0]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\"+cookie2.toString(16)+\" 0x\"+cookie1.toString(16))}if(HEAP32[0]!==1668509029)abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\")}(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\"})();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,\"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.fround,\"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.clz32,\"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.trunc,\"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=\"undefined\"){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err(\"still waiting on run dependencies:\")}err(\"dependency: \"+dep)}if(shown){err(\"(end of list)\")}},1e4)}}else{err(\"warning: run dependency added without ID\")}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err(\"warning: run dependency removed without ID\")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}function createExportWrapper(name,fixedasm){return function(){var displayName=name;var asm=fixedasm;if(!fixedasm){asm=Module[\"asm\"]}assert(runtimeInitialized,\"native function `\"+displayName+\"` called before runtime initialization\");if(!asm[name]){assert(asm[name],\"exported native function `\"+displayName+\"` not found\")}return asm[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile=\"decoder.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"memory\"];assert(wasmMemory,\"memory not found in wasm exports\");updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"__indirect_function_table\"];assert(wasmTable,\"table not found in wasm exports\");addOnInit(Module[\"asm\"][\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,\"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");trueModule=null;receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);if(isFileURI(wasmBinaryFile)){err(\"warning: Loading from a file URI (\"+wasmBinaryFile+\") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing\")}abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){warnOnce(\"warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return\"(no stack trace available)\"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){assert(alignment,\"alignment argument is required\");return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{assert(typeof parent==\"object\");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{if(typeof type==\"string\"){throw type}var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1);assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack){Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true});this.stack=demangleAll(this.stack)}};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;___stdio_exit();for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},absolutePath:()=>{abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder:()=>{abort(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink:()=>{abort(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath:()=>{abort(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc:()=>{abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath:()=>{abort(\"FS.standardizePath has been removed; use PATH.normalize instead\")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=(handle=>handle);return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning.stack.replace(/^Error: /,\"\"));releaseClassHandle(info.$$)});attachFinalizer=(handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};var cls=$$.ptrType.registeredClass;info.leakWarning=new Error(\"Embind found a leaked C++ instance \"+cls.name+\" <0x\"+$$.ptr.toString(16)+\">.\\n\"+\"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\"+\"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\"+\"Originally allocated\");if(\"captureStackTrace\"in Error){Error.captureStackTrace(info.leakWarning,RegisteredPointer_fromWireType)}finalizationRegistry.register(handle,info,handle)}return handle});detachFinalizer=(handle=>finalizationRegistry.unregister(handle));return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){assert(\"dynCall_\"+sig in Module,\"bad function pointer type - no table for sig '\"+sig+\"'\");if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,\"--\").length)}else{assert(sig.length==1)}var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),\"missing table entry in dynCall: \"+ptr);return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.includes(\"j\"),\"getDynCaller should only be called with i64 sigs\");var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=(()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)});whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{throwUnboundTypeError(\"Cannot access \"+humanName+\" due to unbound types\",[getterReturnType,setterArgumentType])})}else{desc.set=(v=>{throwBindingError(humanName+\" is a read-only property\")})}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+toTypeName)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=Emval.toHandle(destructors);HEAP32[destructorsRef>>2]=rd;return returnType[\"toWireType\"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+\"_$\"+types.slice(1).map(function(t){return t.name}).join(\"_\")+\"$\";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=[\"retType\"];var args=[retType];var argsList=\"\";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"native code called abort()\")}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){assert(hi===(hi|0));return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3]);argIndex+=8}else if(type==\"i64\"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type=\"i32\";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg(\"i32\");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg(\"i32\");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case\"h\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case\"l\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case\"L\":case\"q\":case\"j\":argSize=8;break;case\"z\":case\"t\":case\"I\":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case\"d\":case\"i\":case\"u\":case\"o\":case\"x\":case\"X\":case\"p\":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg(\"i\"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix=\"\";if(next==100||next==105){argText=reSign(currArg,8*argSize).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?\"0\":\"\")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?\"0x\":\"\";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?\"f\":\"F\").charCodeAt(0);precision-=exponent+1}else{next=(next==103?\"e\":\"E\").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\\d$/.test(argText)){argText=argText.slice(0,-1)+\"0\"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText=\"-\"+argText}}var parts=argText.split(\"e\");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(\".\")&&(parts[0].slice(-1)==\"0\"||parts[0].slice(-1)==\".\")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(\".\")==-1)parts[0]+=\".\";while(precision>effectivePrecision++)parts[0]+=\"0\"}argText=parts[0]+(parts.length>1?\"e\"+parts[1]:\"\");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText=\"+\"+argText}else if(flagPadSign){argText=\" \"+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg(\"i8\"));break}case\"n\":{var ptr=getNextArg(\"i32*\");HEAP32[ptr>>2]=ret.length;break}case\"%\":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(var i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a==\"number\"||typeof a==\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce(\"EM_LOG_DEMANGLE is deprecated; ignoring\")}if(flags&8&&typeof emscripten_source_map==\"undefined\"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes(\"_emscripten_\"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(var l in lines){var line=lines[l];var symbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+symbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+symbolName:\" at \"+symbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\\s+$/,\"\");str+=(str.length>0?\"\\n\":\"\")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){err(\"emscripten_realloc_buffer: Attempted to grow heap from \"+buffer.byteLength+\" bytes to \"+size+\" bytes, but got error: \"+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;assert(requestedSize>oldSize);var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){err(\"Cannot enlarge memory, asked to go up to \"+requestedSize+\" bytes, but the limit is \"+maxHeapSize+\" bytes!\");return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}err(\"Failed to grow the heap from \"+oldSize+\" bytes to \"+newSize+\" bytes, not enough memory!\");return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();ERRNO_CODES={\"EPERM\":63,\"ENOENT\":44,\"ESRCH\":71,\"EINTR\":27,\"EIO\":29,\"ENXIO\":60,\"E2BIG\":1,\"ENOEXEC\":45,\"EBADF\":8,\"ECHILD\":12,\"EAGAIN\":6,\"EWOULDBLOCK\":6,\"ENOMEM\":48,\"EACCES\":2,\"EFAULT\":21,\"ENOTBLK\":105,\"EBUSY\":10,\"EEXIST\":20,\"EXDEV\":75,\"ENODEV\":43,\"ENOTDIR\":54,\"EISDIR\":31,\"EINVAL\":28,\"ENFILE\":41,\"EMFILE\":33,\"ENOTTY\":59,\"ETXTBSY\":74,\"EFBIG\":22,\"ENOSPC\":51,\"ESPIPE\":70,\"EROFS\":69,\"EMLINK\":34,\"EPIPE\":64,\"EDOM\":18,\"ERANGE\":68,\"ENOMSG\":49,\"EIDRM\":24,\"ECHRNG\":106,\"EL2NSYNC\":156,\"EL3HLT\":107,\"EL3RST\":108,\"ELNRNG\":109,\"EUNATCH\":110,\"ENOCSI\":111,\"EL2HLT\":112,\"EDEADLK\":16,\"ENOLCK\":46,\"EBADE\":113,\"EBADR\":114,\"EXFULL\":115,\"ENOANO\":104,\"EBADRQC\":103,\"EBADSLT\":102,\"EDEADLOCK\":16,\"EBFONT\":101,\"ENOSTR\":100,\"ENODATA\":116,\"ETIME\":117,\"ENOSR\":118,\"ENONET\":119,\"ENOPKG\":120,\"EREMOTE\":121,\"ENOLINK\":47,\"EADV\":122,\"ESRMNT\":123,\"ECOMM\":124,\"EPROTO\":65,\"EMULTIHOP\":36,\"EDOTDOT\":125,\"EBADMSG\":9,\"ENOTUNIQ\":126,\"EBADFD\":127,\"EREMCHG\":128,\"ELIBACC\":129,\"ELIBBAD\":130,\"ELIBSCN\":131,\"ELIBMAX\":132,\"ELIBEXEC\":133,\"ENOSYS\":52,\"ENOTEMPTY\":55,\"ENAMETOOLONG\":37,\"ELOOP\":32,\"EOPNOTSUPP\":138,\"EPFNOSUPPORT\":139,\"ECONNRESET\":15,\"ENOBUFS\":42,\"EAFNOSUPPORT\":5,\"EPROTOTYPE\":67,\"ENOTSOCK\":57,\"ENOPROTOOPT\":50,\"ESHUTDOWN\":140,\"ECONNREFUSED\":14,\"EADDRINUSE\":3,\"ECONNABORTED\":13,\"ENETUNREACH\":40,\"ENETDOWN\":38,\"ETIMEDOUT\":73,\"EHOSTDOWN\":142,\"EHOSTUNREACH\":23,\"EINPROGRESS\":26,\"EALREADY\":7,\"EDESTADDRREQ\":17,\"EMSGSIZE\":35,\"EPROTONOSUPPORT\":66,\"ESOCKTNOSUPPORT\":137,\"EADDRNOTAVAIL\":4,\"ENETRESET\":39,\"EISCONN\":30,\"ENOTCONN\":53,\"ETOOMANYREFS\":141,\"EUSERS\":136,\"EDQUOT\":19,\"ESTALE\":72,\"ENOTSUP\":138,\"ENOMEDIUM\":148,\"EILSEQ\":25,\"EOVERFLOW\":61,\"ECANCELED\":11,\"ENOTRECOVERABLE\":56,\"EOWNERDEAD\":62,\"ESTRPIPE\":135};embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function checkIncomingModuleAPI(){ignoredModuleProp(\"fetchSettings\")}var asmLibraryArg={\"__syscall_fcntl64\":___syscall_fcntl64,\"__syscall_openat\":___syscall_openat,\"_embind_register_bigint\":__embind_register_bigint,\"_embind_register_bool\":__embind_register_bool,\"_embind_register_class\":__embind_register_class,\"_embind_register_class_constructor\":__embind_register_class_constructor,\"_embind_register_class_function\":__embind_register_class_function,\"_embind_register_class_property\":__embind_register_class_property,\"_embind_register_emval\":__embind_register_emval,\"_embind_register_float\":__embind_register_float,\"_embind_register_integer\":__embind_register_integer,\"_embind_register_memory_view\":__embind_register_memory_view,\"_embind_register_std_string\":__embind_register_std_string,\"_embind_register_std_wstring\":__embind_register_std_wstring,\"_embind_register_void\":__embind_register_void,\"_emscripten_date_now\":__emscripten_date_now,\"_emval_as\":__emval_as,\"_emval_call_void_method\":__emval_call_void_method,\"_emval_decref\":__emval_decref,\"_emval_get_method_caller\":__emval_get_method_caller,\"_emval_incref\":__emval_incref,\"_emval_run_destructors\":__emval_run_destructors,\"_emval_take_value\":__emval_take_value,\"_gmtime_js\":__gmtime_js,\"_localtime_js\":__localtime_js,\"_mktime_js\":__mktime_js,\"_tzset_js\":__tzset_js,\"abort\":_abort,\"emscripten_log\":_emscripten_log,\"emscripten_resize_heap\":_emscripten_resize_heap,\"environ_get\":_environ_get,\"environ_sizes_get\":_environ_sizes_get,\"fd_close\":_fd_close,\"fd_fdstat_get\":_fd_fdstat_get,\"fd_read\":_fd_read,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"setTempRet0\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=createExportWrapper(\"__wasm_call_ctors\");var _free=Module[\"_free\"]=createExportWrapper(\"free\");var _malloc=Module[\"_malloc\"]=createExportWrapper(\"malloc\");var _strlen=Module[\"_strlen\"]=createExportWrapper(\"strlen\");var ___errno_location=Module[\"___errno_location\"]=createExportWrapper(\"__errno_location\");var ___getTypeName=Module[\"___getTypeName\"]=createExportWrapper(\"__getTypeName\");var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=createExportWrapper(\"__embind_register_native_and_builtin_types\");var ___stdio_exit=Module[\"___stdio_exit\"]=createExportWrapper(\"__stdio_exit\");var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=createExportWrapper(\"emscripten_builtin_memalign\");var _emscripten_stack_init=Module[\"_emscripten_stack_init\"]=function(){return(_emscripten_stack_init=Module[\"_emscripten_stack_init\"]=Module[\"asm\"][\"emscripten_stack_init\"]).apply(null,arguments)};var _emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=function(){return(_emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=Module[\"asm\"][\"emscripten_stack_get_free\"]).apply(null,arguments)};var _emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=function(){return(_emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null,arguments)};var _emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=function(){return(_emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=createExportWrapper(\"stackSave\");var stackRestore=Module[\"stackRestore\"]=createExportWrapper(\"stackRestore\");var stackAlloc=Module[\"stackAlloc\"]=createExportWrapper(\"stackAlloc\");var dynCall_ijiii=Module[\"dynCall_ijiii\"]=createExportWrapper(\"dynCall_ijiii\");var dynCall_viiijj=Module[\"dynCall_viiijj\"]=createExportWrapper(\"dynCall_viiijj\");var dynCall_jij=Module[\"dynCall_jij\"]=createExportWrapper(\"dynCall_jij\");var dynCall_jii=Module[\"dynCall_jii\"]=createExportWrapper(\"dynCall_jii\");var dynCall_jiji=Module[\"dynCall_jiji\"]=createExportWrapper(\"dynCall_jiji\");var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=112940;unexportedRuntimeFunction(\"intArrayFromString\",false);unexportedRuntimeFunction(\"intArrayToString\",false);unexportedRuntimeFunction(\"ccall\",false);unexportedRuntimeFunction(\"cwrap\",false);unexportedRuntimeFunction(\"setValue\",false);unexportedRuntimeFunction(\"getValue\",false);unexportedRuntimeFunction(\"allocate\",false);unexportedRuntimeFunction(\"UTF8ArrayToString\",false);unexportedRuntimeFunction(\"UTF8ToString\",false);unexportedRuntimeFunction(\"stringToUTF8Array\",false);unexportedRuntimeFunction(\"stringToUTF8\",false);unexportedRuntimeFunction(\"lengthBytesUTF8\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"addOnPreRun\",false);unexportedRuntimeFunction(\"addOnInit\",false);unexportedRuntimeFunction(\"addOnPreMain\",false);unexportedRuntimeFunction(\"addOnExit\",false);unexportedRuntimeFunction(\"addOnPostRun\",false);unexportedRuntimeFunction(\"writeStringToMemory\",false);unexportedRuntimeFunction(\"writeArrayToMemory\",false);unexportedRuntimeFunction(\"writeAsciiToMemory\",false);unexportedRuntimeFunction(\"addRunDependency\",true);unexportedRuntimeFunction(\"removeRunDependency\",true);unexportedRuntimeFunction(\"FS_createFolder\",false);unexportedRuntimeFunction(\"FS_createPath\",true);unexportedRuntimeFunction(\"FS_createDataFile\",true);unexportedRuntimeFunction(\"FS_createPreloadedFile\",true);unexportedRuntimeFunction(\"FS_createLazyFile\",true);unexportedRuntimeFunction(\"FS_createLink\",false);unexportedRuntimeFunction(\"FS_createDevice\",true);unexportedRuntimeFunction(\"FS_unlink\",true);unexportedRuntimeFunction(\"getLEB\",false);unexportedRuntimeFunction(\"getFunctionTables\",false);unexportedRuntimeFunction(\"alignFunctionTables\",false);unexportedRuntimeFunction(\"registerFunctions\",false);unexportedRuntimeFunction(\"addFunction\",false);unexportedRuntimeFunction(\"removeFunction\",false);unexportedRuntimeFunction(\"prettyPrint\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"getCompilerSetting\",false);unexportedRuntimeFunction(\"print\",false);unexportedRuntimeFunction(\"printErr\",false);unexportedRuntimeFunction(\"getTempRet0\",false);unexportedRuntimeFunction(\"setTempRet0\",false);unexportedRuntimeFunction(\"callMain\",false);unexportedRuntimeFunction(\"abort\",false);unexportedRuntimeFunction(\"keepRuntimeAlive\",false);unexportedRuntimeFunction(\"ptrToString\",false);unexportedRuntimeFunction(\"zeroMemory\",false);unexportedRuntimeFunction(\"stringToNewUTF8\",false);unexportedRuntimeFunction(\"emscripten_realloc_buffer\",false);unexportedRuntimeFunction(\"ENV\",false);unexportedRuntimeFunction(\"ERRNO_CODES\",false);unexportedRuntimeFunction(\"ERRNO_MESSAGES\",false);unexportedRuntimeFunction(\"setErrNo\",false);unexportedRuntimeFunction(\"inetPton4\",false);unexportedRuntimeFunction(\"inetNtop4\",false);unexportedRuntimeFunction(\"inetPton6\",false);unexportedRuntimeFunction(\"inetNtop6\",false);unexportedRuntimeFunction(\"readSockaddr\",false);unexportedRuntimeFunction(\"writeSockaddr\",false);unexportedRuntimeFunction(\"DNS\",false);unexportedRuntimeFunction(\"getHostByName\",false);unexportedRuntimeFunction(\"Protocols\",false);unexportedRuntimeFunction(\"Sockets\",false);unexportedRuntimeFunction(\"getRandomDevice\",false);unexportedRuntimeFunction(\"traverseStack\",false);unexportedRuntimeFunction(\"UNWIND_CACHE\",false);unexportedRuntimeFunction(\"convertPCtoSourceLocation\",false);unexportedRuntimeFunction(\"readAsmConstArgsArray\",false);unexportedRuntimeFunction(\"readAsmConstArgs\",false);unexportedRuntimeFunction(\"mainThreadEM_ASM\",false);unexportedRuntimeFunction(\"jstoi_q\",false);unexportedRuntimeFunction(\"jstoi_s\",false);unexportedRuntimeFunction(\"getExecutableName\",false);unexportedRuntimeFunction(\"listenOnce\",false);unexportedRuntimeFunction(\"autoResumeAudioContext\",false);unexportedRuntimeFunction(\"dynCallLegacy\",false);unexportedRuntimeFunction(\"getDynCaller\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"setWasmTableEntry\",false);unexportedRuntimeFunction(\"getWasmTableEntry\",false);unexportedRuntimeFunction(\"handleException\",false);unexportedRuntimeFunction(\"runtimeKeepalivePush\",false);unexportedRuntimeFunction(\"runtimeKeepalivePop\",false);unexportedRuntimeFunction(\"callUserCallback\",false);unexportedRuntimeFunction(\"maybeExit\",false);unexportedRuntimeFunction(\"safeSetTimeout\",false);unexportedRuntimeFunction(\"asmjsMangle\",false);unexportedRuntimeFunction(\"asyncLoad\",false);unexportedRuntimeFunction(\"alignMemory\",false);unexportedRuntimeFunction(\"mmapAlloc\",false);unexportedRuntimeFunction(\"reallyNegative\",false);unexportedRuntimeFunction(\"unSign\",false);unexportedRuntimeFunction(\"reSign\",false);unexportedRuntimeFunction(\"formatString\",false);unexportedRuntimeFunction(\"PATH\",false);unexportedRuntimeFunction(\"PATH_FS\",false);unexportedRuntimeFunction(\"SYSCALLS\",false);unexportedRuntimeFunction(\"getSocketFromFD\",false);unexportedRuntimeFunction(\"getSocketAddress\",false);unexportedRuntimeFunction(\"JSEvents\",false);unexportedRuntimeFunction(\"registerKeyEventCallback\",false);unexportedRuntimeFunction(\"specialHTMLTargets\",false);unexportedRuntimeFunction(\"maybeCStringToJsString\",false);unexportedRuntimeFunction(\"findEventTarget\",false);unexportedRuntimeFunction(\"findCanvasEventTarget\",false);unexportedRuntimeFunction(\"getBoundingClientRect\",false);unexportedRuntimeFunction(\"fillMouseEventData\",false);unexportedRuntimeFunction(\"registerMouseEventCallback\",false);unexportedRuntimeFunction(\"registerWheelEventCallback\",false);unexportedRuntimeFunction(\"registerUiEventCallback\",false);unexportedRuntimeFunction(\"registerFocusEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceOrientationEventData\",false);unexportedRuntimeFunction(\"registerDeviceOrientationEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceMotionEventData\",false);unexportedRuntimeFunction(\"registerDeviceMotionEventCallback\",false);unexportedRuntimeFunction(\"screenOrientation\",false);unexportedRuntimeFunction(\"fillOrientationChangeEventData\",false);unexportedRuntimeFunction(\"registerOrientationChangeEventCallback\",false);unexportedRuntimeFunction(\"fillFullscreenChangeEventData\",false);unexportedRuntimeFunction(\"registerFullscreenChangeEventCallback\",false);unexportedRuntimeFunction(\"registerRestoreOldStyle\",false);unexportedRuntimeFunction(\"hideEverythingExceptGivenElement\",false);unexportedRuntimeFunction(\"restoreHiddenElements\",false);unexportedRuntimeFunction(\"setLetterbox\",false);unexportedRuntimeFunction(\"currentFullscreenStrategy\",false);unexportedRuntimeFunction(\"restoreOldWindowedStyle\",false);unexportedRuntimeFunction(\"softFullscreenResizeWebGLRenderTarget\",false);unexportedRuntimeFunction(\"doRequestFullscreen\",false);unexportedRuntimeFunction(\"fillPointerlockChangeEventData\",false);unexportedRuntimeFunction(\"registerPointerlockChangeEventCallback\",false);unexportedRuntimeFunction(\"registerPointerlockErrorEventCallback\",false);unexportedRuntimeFunction(\"requestPointerLock\",false);unexportedRuntimeFunction(\"fillVisibilityChangeEventData\",false);unexportedRuntimeFunction(\"registerVisibilityChangeEventCallback\",false);unexportedRuntimeFunction(\"registerTouchEventCallback\",false);unexportedRuntimeFunction(\"fillGamepadEventData\",false);unexportedRuntimeFunction(\"registerGamepadEventCallback\",false);unexportedRuntimeFunction(\"registerBeforeUnloadEventCallback\",false);unexportedRuntimeFunction(\"fillBatteryEventData\",false);unexportedRuntimeFunction(\"battery\",false);unexportedRuntimeFunction(\"registerBatteryEventCallback\",false);unexportedRuntimeFunction(\"setCanvasElementSize\",false);unexportedRuntimeFunction(\"getCanvasElementSize\",false);unexportedRuntimeFunction(\"demangle\",false);unexportedRuntimeFunction(\"demangleAll\",false);unexportedRuntimeFunction(\"jsStackTrace\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"getEnvStrings\",false);unexportedRuntimeFunction(\"checkWasiClock\",false);unexportedRuntimeFunction(\"writeI53ToI64\",false);unexportedRuntimeFunction(\"writeI53ToI64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToI64Signaling\",false);unexportedRuntimeFunction(\"writeI53ToU64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToU64Signaling\",false);unexportedRuntimeFunction(\"readI53FromI64\",false);unexportedRuntimeFunction(\"readI53FromU64\",false);unexportedRuntimeFunction(\"convertI32PairToI53\",false);unexportedRuntimeFunction(\"convertU32PairToI53\",false);unexportedRuntimeFunction(\"dlopenMissingError\",false);unexportedRuntimeFunction(\"setImmediateWrapped\",false);unexportedRuntimeFunction(\"clearImmediateWrapped\",false);unexportedRuntimeFunction(\"polyfillSetImmediate\",false);unexportedRuntimeFunction(\"uncaughtExceptionCount\",false);unexportedRuntimeFunction(\"exceptionLast\",false);unexportedRuntimeFunction(\"exceptionCaught\",false);unexportedRuntimeFunction(\"ExceptionInfo\",false);unexportedRuntimeFunction(\"exception_addRef\",false);unexportedRuntimeFunction(\"exception_decRef\",false);unexportedRuntimeFunction(\"Browser\",false);unexportedRuntimeFunction(\"setMainLoop\",false);unexportedRuntimeFunction(\"wget\",false);unexportedRuntimeFunction(\"FS\",false);unexportedRuntimeFunction(\"MEMFS\",false);unexportedRuntimeFunction(\"TTY\",false);unexportedRuntimeFunction(\"PIPEFS\",false);unexportedRuntimeFunction(\"SOCKFS\",false);unexportedRuntimeFunction(\"_setNetworkCallback\",false);unexportedRuntimeFunction(\"tempFixedLengthArray\",false);unexportedRuntimeFunction(\"miniTempWebGLFloatBuffers\",false);unexportedRuntimeFunction(\"heapObjectForWebGLType\",false);unexportedRuntimeFunction(\"heapAccessShiftForWebGLHeap\",false);unexportedRuntimeFunction(\"GL\",false);unexportedRuntimeFunction(\"emscriptenWebGLGet\",false);unexportedRuntimeFunction(\"computeUnpackAlignedImageSize\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetTexPixelData\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetUniform\",false);unexportedRuntimeFunction(\"webglGetUniformLocation\",false);unexportedRuntimeFunction(\"webglPrepareUniformLocationsBeforeFirstUse\",false);unexportedRuntimeFunction(\"webglGetLeftBracePos\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetVertexAttrib\",false);unexportedRuntimeFunction(\"writeGLArray\",false);unexportedRuntimeFunction(\"AL\",false);unexportedRuntimeFunction(\"SDL_unicode\",false);unexportedRuntimeFunction(\"SDL_ttfContext\",false);unexportedRuntimeFunction(\"SDL_audio\",false);unexportedRuntimeFunction(\"SDL\",false);unexportedRuntimeFunction(\"SDL_gfx\",false);unexportedRuntimeFunction(\"GLUT\",false);unexportedRuntimeFunction(\"EGL\",false);unexportedRuntimeFunction(\"GLFW_Window\",false);unexportedRuntimeFunction(\"GLFW\",false);unexportedRuntimeFunction(\"GLEW\",false);unexportedRuntimeFunction(\"IDBStore\",false);unexportedRuntimeFunction(\"runAndAbortIfError\",false);unexportedRuntimeFunction(\"InternalError\",false);unexportedRuntimeFunction(\"BindingError\",false);unexportedRuntimeFunction(\"UnboundTypeError\",false);unexportedRuntimeFunction(\"PureVirtualError\",false);unexportedRuntimeFunction(\"init_embind\",false);unexportedRuntimeFunction(\"throwInternalError\",false);unexportedRuntimeFunction(\"throwBindingError\",false);unexportedRuntimeFunction(\"throwUnboundTypeError\",false);unexportedRuntimeFunction(\"ensureOverloadTable\",false);unexportedRuntimeFunction(\"exposePublicSymbol\",false);unexportedRuntimeFunction(\"replacePublicSymbol\",false);unexportedRuntimeFunction(\"extendError\",false);unexportedRuntimeFunction(\"createNamedFunction\",false);unexportedRuntimeFunction(\"registeredInstances\",false);unexportedRuntimeFunction(\"getBasestPointer\",false);unexportedRuntimeFunction(\"registerInheritedInstance\",false);unexportedRuntimeFunction(\"unregisterInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstanceCount\",false);unexportedRuntimeFunction(\"getLiveInheritedInstances\",false);unexportedRuntimeFunction(\"registeredTypes\",false);unexportedRuntimeFunction(\"awaitingDependencies\",false);unexportedRuntimeFunction(\"typeDependencies\",false);unexportedRuntimeFunction(\"registeredPointers\",false);unexportedRuntimeFunction(\"registerType\",false);unexportedRuntimeFunction(\"whenDependentTypesAreResolved\",false);unexportedRuntimeFunction(\"embind_charCodes\",false);unexportedRuntimeFunction(\"embind_init_charCodes\",false);unexportedRuntimeFunction(\"readLatin1String\",false);unexportedRuntimeFunction(\"getTypeName\",false);unexportedRuntimeFunction(\"heap32VectorToArray\",false);unexportedRuntimeFunction(\"requireRegisteredType\",false);unexportedRuntimeFunction(\"getShiftFromSize\",false);unexportedRuntimeFunction(\"integerReadValueFromPointer\",false);unexportedRuntimeFunction(\"enumReadValueFromPointer\",false);unexportedRuntimeFunction(\"floatReadValueFromPointer\",false);unexportedRuntimeFunction(\"simpleReadValueFromPointer\",false);unexportedRuntimeFunction(\"runDestructors\",false);unexportedRuntimeFunction(\"new_\",false);unexportedRuntimeFunction(\"craftInvokerFunction\",false);unexportedRuntimeFunction(\"embind__requireFunction\",false);unexportedRuntimeFunction(\"tupleRegistrations\",false);unexportedRuntimeFunction(\"structRegistrations\",false);unexportedRuntimeFunction(\"genericPointerToWireType\",false);unexportedRuntimeFunction(\"constNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"nonConstNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"init_RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer_getPointee\",false);unexportedRuntimeFunction(\"RegisteredPointer_destructor\",false);unexportedRuntimeFunction(\"RegisteredPointer_deleteObject\",false);unexportedRuntimeFunction(\"RegisteredPointer_fromWireType\",false);unexportedRuntimeFunction(\"runDestructor\",false);unexportedRuntimeFunction(\"releaseClassHandle\",false);unexportedRuntimeFunction(\"finalizationRegistry\",false);unexportedRuntimeFunction(\"detachFinalizer_deps\",false);unexportedRuntimeFunction(\"detachFinalizer\",false);unexportedRuntimeFunction(\"attachFinalizer\",false);unexportedRuntimeFunction(\"makeClassHandle\",false);unexportedRuntimeFunction(\"init_ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle_isAliasOf\",false);unexportedRuntimeFunction(\"throwInstanceAlreadyDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_clone\",false);unexportedRuntimeFunction(\"ClassHandle_delete\",false);unexportedRuntimeFunction(\"deletionQueue\",false);unexportedRuntimeFunction(\"ClassHandle_isDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_deleteLater\",false);unexportedRuntimeFunction(\"flushPendingDeletes\",false);unexportedRuntimeFunction(\"delayFunction\",false);unexportedRuntimeFunction(\"setDelayFunction\",false);unexportedRuntimeFunction(\"RegisteredClass\",false);unexportedRuntimeFunction(\"shallowCopyInternalPointer\",false);unexportedRuntimeFunction(\"downcastPointer\",false);unexportedRuntimeFunction(\"upcastPointer\",false);unexportedRuntimeFunction(\"validateThis\",false);unexportedRuntimeFunction(\"char_0\",false);unexportedRuntimeFunction(\"char_9\",false);unexportedRuntimeFunction(\"makeLegalFunctionName\",false);unexportedRuntimeFunction(\"emval_handle_array\",false);unexportedRuntimeFunction(\"emval_free_list\",false);unexportedRuntimeFunction(\"emval_symbols\",false);unexportedRuntimeFunction(\"init_emval\",false);unexportedRuntimeFunction(\"count_emval_handles\",false);unexportedRuntimeFunction(\"get_first_emval\",false);unexportedRuntimeFunction(\"getStringOrSymbol\",false);unexportedRuntimeFunction(\"Emval\",false);unexportedRuntimeFunction(\"emval_newers\",false);unexportedRuntimeFunction(\"craftEmvalAllocator\",false);unexportedRuntimeFunction(\"emval_get_global\",false);unexportedRuntimeFunction(\"emval_methodCallers\",false);unexportedRuntimeFunction(\"emval_registeredMethods\",false);unexportedRuntimeFunction(\"warnOnce\",false);unexportedRuntimeFunction(\"stackSave\",false);unexportedRuntimeFunction(\"stackRestore\",false);unexportedRuntimeFunction(\"stackAlloc\",false);unexportedRuntimeFunction(\"AsciiToString\",false);unexportedRuntimeFunction(\"stringToAscii\",false);unexportedRuntimeFunction(\"UTF16ToString\",false);unexportedRuntimeFunction(\"stringToUTF16\",false);unexportedRuntimeFunction(\"lengthBytesUTF16\",false);unexportedRuntimeFunction(\"UTF32ToString\",false);unexportedRuntimeFunction(\"stringToUTF32\",false);unexportedRuntimeFunction(\"lengthBytesUTF32\",false);unexportedRuntimeFunction(\"allocateUTF8\",false);unexportedRuntimeFunction(\"allocateUTF8OnStack\",false);Module[\"writeStackCookie\"]=writeStackCookie;Module[\"checkStackCookie\"]=checkStackCookie;unexportedRuntimeSymbol(\"ALLOC_NORMAL\",false);unexportedRuntimeSymbol(\"ALLOC_STACK\",false);var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args){args=args||arguments_;if(runDependencies>0){return}stackCheckInit();preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();assert(!Module[\"_main\"],'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]');postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}checkStackCookie()}Module[\"run\"]=run;function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=(x=>{has=true});try{___stdio_exit();[\"stdout\",\"stderr\"].forEach(function(name){var info=FS.analyzePath(\"/dev/\"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true}})}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\")}}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();module.exports=Module;\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError:'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\n\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import Module from './decoder/decoder';\nimport createWebGL from './utils/webgl';\nimport {WORKER_CMD_TYPE, MEDIA_TYPE, WORKER_SEND_TYPE, ENCODED_VIDEO_TYPE, DEFAULT_PLAYER_OPTIONS} from \"./constant\";\nimport {formatVideoDecoderConfigure, isGreenYUV} from \"./utils\";\n\nif (!Date.now) Date.now = function () {\n return new Date().getTime();\n};\n\nModule.postRun = function () {\n var buffer = [];\n var tempAudioBuffer = [];\n var wcsVideoDecoder = {};\n if (\"VideoEncoder\" in self) {\n wcsVideoDecoder = {\n hasInit: false,\n isEmitInfo: false,\n offscreenCanvas: null,\n offscreenCanvasCtx: null,\n decoder: new VideoDecoder({\n output: function (videoFrame) {\n if (!wcsVideoDecoder.isEmitInfo) {\n decoder.opt.debug && console.log('Jessibuca: [worker] Webcodecs Video Decoder initSize');\n postMessage({\n cmd: WORKER_CMD_TYPE.initVideo,\n w: videoFrame.codedWidth,\n h: videoFrame.codedHeight\n });\n wcsVideoDecoder.isEmitInfo = true;\n wcsVideoDecoder.offscreenCanvas = new OffscreenCanvas(videoFrame.codedWidth, videoFrame.codedHeight);\n wcsVideoDecoder.offscreenCanvasCtx = wcsVideoDecoder.offscreenCanvas.getContext(\"2d\");\n }\n\n wcsVideoDecoder.offscreenCanvasCtx.drawImage(videoFrame, 0, 0, videoFrame.codedWidth, videoFrame.codedHeight);\n let image_bitmap = wcsVideoDecoder.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: decoder.delay,\n ts: 0\n }, [image_bitmap]);\n\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close();\n } else {\n videoFrame.destroy();\n }\n }, 100);\n\n },\n error: function (error) {\n console.error(error);\n }\n }),\n decode: function (payload, ts) {\n const isIFrame = payload[0] >> 4 === 1;\n if (!wcsVideoDecoder.hasInit) {\n if (isIFrame && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n decoder.setVideoCodec(videoCodec);\n const config = formatVideoDecoderConfigure(payload.slice(5));\n wcsVideoDecoder.decoder.configure(config);\n wcsVideoDecoder.hasInit = true;\n }\n } else {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIFrame ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n });\n wcsVideoDecoder.decoder.decode(chunk);\n }\n },\n reset() {\n wcsVideoDecoder.hasInit = false;\n wcsVideoDecoder.isEmitInfo = false;\n wcsVideoDecoder.offscreenCanvas = null;\n wcsVideoDecoder.offscreenCanvasCtx = null;\n }\n };\n }\n\n var decoder = {\n opt: {\n debug: DEFAULT_PLAYER_OPTIONS.debug,\n useOffscreen: DEFAULT_PLAYER_OPTIONS.useOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment,\n videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay\n },\n useOffscreen: function () {\n return decoder.opt.useOffscreen && typeof OffscreenCanvas != 'undefined';\n },\n initAudioPlanar: function (channels, samplerate) {\n postMessage({cmd: WORKER_CMD_TYPE.initAudio, sampleRate: samplerate, channels: channels});\n var outputArray = [];\n var remain = 0;\n this.playAudioPlanar = function (data, len, ts) {\n var frameCount = len;\n var origin = [];\n var start = 0;\n for (var channel = 0; channel < 2; channel++) {\n var fp = Module.HEAPU32[(data >> 2) + channel] >> 2;\n origin[channel] = Module.HEAPF32.subarray(fp, fp + frameCount);\n }\n if (remain) {\n len = 1024 - remain;\n if (frameCount >= len) {\n outputArray[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0].subarray(0, len));\n if (channels == 2) {\n outputArray[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1].subarray(0, len));\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n start = len;\n frameCount -= len;\n } else {\n remain += frameCount;\n tempAudioBuffer[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0]);\n if (channels == 2) {\n tempAudioBuffer[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1]);\n }\n return;\n }\n }\n for (remain = frameCount; remain >= 1024; remain -= 1024) {\n outputArray[0] = origin[0].slice(start, start += 1024);\n if (channels == 2) {\n outputArray[1] = origin[1].slice(start - 1024, start);\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n }\n if (remain) {\n tempAudioBuffer[0] = origin[0].slice(start);\n if (channels == 2) {\n tempAudioBuffer[1] = origin[1].slice(start);\n }\n }\n };\n },\n setVideoCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.videoCode, code});\n },\n setAudioCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.audioCode, code});\n },\n setVideoSize: function (w, h) {\n postMessage({cmd: WORKER_CMD_TYPE.initVideo, w: w, h: h});\n var size = w * h;\n var qsize = size >> 2;\n if (decoder.useOffscreen()) {\n this.offscreenCanvas = new OffscreenCanvas(w, h);\n this.offscreenCanvasGL = this.offscreenCanvas.getContext(\"webgl\");\n this.webglObj = createWebGL(this.offscreenCanvasGL, decoder.opt.openWebglAlignment);\n this.draw = function (ts, y, u, v) {\n const yData = Module.HEAPU8.subarray(y, y + size);\n const uData = Module.HEAPU8.subarray(u, u + qsize);\n const vData = Module.HEAPU8.subarray(v, v + (qsize));\n // if (isGreenYUV(Uint8Array.from(yData))) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: draw offscreenCanvas is green yuv');\n // return\n // }\n\n this.webglObj.render(w, h, yData, uData, vData);\n let image_bitmap = this.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: this.delay,\n ts\n }, [image_bitmap]);\n };\n } else {\n this.draw = function (ts, y, u, v) {\n const yData = Uint8Array.from(Module.HEAPU8.subarray(y, y + size));\n const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize));\n const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize)));\n // if (isGreenYUV(yData)) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: draw is green yuv');\n // return\n // }\n const outputArray = [yData, uData, vData];\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n output: outputArray,\n delay: this.delay,\n ts\n }, outputArray.map(x => x.buffer));\n };\n }\n },\n getDelay: function (timestamp) {\n if (!timestamp) {\n return -1;\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp;\n this.startTimestamp = Date.now();\n this.delay = -1;\n } else {\n\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay;\n },\n resetDelay: function () {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n },\n\n init: function () {\n decoder.opt.debug && console.log('Jessibuca: [worker] init');\n const _doDecode = (data) => {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode');\n if (decoder.opt.useWCS && decoder.useOffscreen() && data.type === MEDIA_TYPE.video && wcsVideoDecoder.decode) {\n wcsVideoDecoder.decode(data.payload, data.ts);\n } else {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode wasm');\n data.decoder.decode(data.payload, data.ts);\n }\n };\n const loop = () => {\n if (buffer.length) {\n if (this.dropping) {\n // // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n while (!data.isIFrame && buffer.length) {\n // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n }\n if (data.isIFrame) {\n this.dropping = false;\n _doDecode(data);\n }\n } else {\n var data = buffer[0];\n if (this.getDelay(data.ts) === -1) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1');\n buffer.shift();\n _doDecode(data);\n } else if (this.delay > decoder.opt.videoBuffer + decoder.opt.videoBufferDelay) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true;\n } else {\n while (buffer.length) {\n data = buffer[0];\n if (this.getDelay(data.ts) > decoder.opt.videoBuffer) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`);\n buffer.shift();\n _doDecode(data);\n } else {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`);\n break;\n }\n }\n }\n }\n }\n else {\n }\n };\n this.stopId = setInterval(loop, 10);\n },\n close: function () {\n decoder.opt.debug && console.log('Jessibuca: [worker]: close');\n clearInterval(this.stopId);\n this.stopId = null;\n audioDecoder.clear && audioDecoder.clear();\n videoDecoder.clear && videoDecoder.clear();\n wcsVideoDecoder.reset && wcsVideoDecoder.reset();\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n\n if (this.webglObj) {\n this.webglObj.destroy();\n this.offscreenCanvas = null;\n this.offscreenCanvasGL = null;\n this.offscreenCanvasCtx = null;\n }\n buffer = [];\n tempAudioBuffer = [];\n delete this.playAudioPlanar;\n delete this.draw;\n },\n pushBuffer: function (bufferData, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: audioDecoder,\n type: MEDIA_TYPE.audio,\n });\n } else if (options.type === MEDIA_TYPE.video) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: videoDecoder,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n });\n }\n }\n };\n var audioDecoder = new Module.AudioDecoder(decoder);\n var videoDecoder = new Module.VideoDecoder(decoder);\n postMessage({cmd: WORKER_SEND_TYPE.init});\n self.onmessage = function (event) {\n var msg = event.data;\n switch (msg.cmd) {\n case WORKER_SEND_TYPE.init:\n try {\n decoder.opt = Object.assign(decoder.opt, JSON.parse(msg.opt));\n } catch (e) {\n\n }\n audioDecoder.sample_rate = msg.sampleRate;\n decoder.init();\n break;\n case WORKER_SEND_TYPE.decode:\n decoder.pushBuffer(msg.buffer, msg.options);\n break;\n case WORKER_SEND_TYPE.audioDecode:\n audioDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.videoDecode:\n videoDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.close:\n decoder.close();\n break;\n case WORKER_SEND_TYPE.updateConfig:\n decoder.opt[msg.key] = msg.value;\n break;\n }\n };\n};\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","Object","assign","thisProgram","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","process","versions","node","ENVIRONMENT_IS_SHELL","Error","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","require","require$$0","dirname","__dirname","require$$1","shell_read","filename","binary","readFileSync","undefined","ret","buffer","Uint8Array","assert","onload","onerror","readFile","err","data","length","replace","arguments_","slice","module","ex","ExitStatus","reason","read","f","readbuffer","setTimeout","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","status","out","bind","checkIncomingModuleAPI","legacyModuleProp","quit_","warnOnce","shown","prop","newName","getOwnPropertyDescriptor","defineProperty","configurable","get","abort","ignoredModuleProp","unexportedMessage","sym","isFSSybol","msg","unexportedRuntimeSymbol","unexportedRuntimeFunction","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","toString","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF16Decoder","UTF16ToString","maxIdx","HEAPU16","codeUnit","HEAP16","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","HEAP32","stringToUTF32","trailSurrogate","lengthBytesUTF32","allocateUTF8","size","_malloc","HEAP8","writeAsciiToMemory","dontAddNull","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","TOTAL_STACK","INITIAL_MEMORY","prototype","set","wasmTable","writeStackCookie","max","_emscripten_stack_get_end","checkStackCookie","cookie1","cookie2","h16","h8","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runtimeInitialized","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","Math","imul","fround","clz32","trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","callback","what","e","RuntimeError","dataURIPrefix","isDataURI","startsWith","isFileURI","createExportWrapper","name","fixedasm","displayName","asm","apply","arguments","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","trueModule","receiveInstantiationResult","result","instantiateArrayBuffer","receiver","instantiate","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","getWasmTableEntry","demangle","demangleAll","regex","x","y","funcPtr","jsStackTrace","stack","setErrNo","value","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","paths","Array","call","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","crypto_module","require$$2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","min","samePartsLength","outputParts","push","concat","TTY","ttys","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","BUFSIZE","Buffer","alloc","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","val","default_tty1_ops","zeroMemory","address","fill","alignMemory","alignment","ceil","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","key","hasOwnProperty","newname","oldpath","position","canOwn","ArrayBuffer","whence","prot","flags","allocated","byteOffset","mmapFlags","asyncLoad","noRunDep","arrayBuffer","event","ERRNO_MESSAGES","ERRNO_CODES","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","object","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","encoding","writeFile","actualNumBytes","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","code","writable","constructor","staticInit","quit","___stdio_exit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","obj","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","Number","getResponseHeader","header","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","defineProperties","fn","forceLoadLazyFile","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","absolutePath","createFolder","createLink","joinPath","standardizePath","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","___syscall_fcntl64","newStream","___syscall_openat","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","createNamedFunction","body","Function","extendError","baseErrorType","errorName","errorClass","BindingError","throwBindingError","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","destructors","o","pointer","destructorFunction","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","rv","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","actualType","getActualType","registeredPointerRecord","toType","isConst","constPointerType","pointerType","dp","FinalizationRegistry","leakWarning","cls","captureStackTrace","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","rawConstructor","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","substring","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","map","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","array","runDestructors","del","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","classType","argTypes","craftInvokerFunction","new_","argumentList","dummy","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","Symbol","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","v","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_std_string","stdStringIsUTF8","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","getLength","valueIsOfTypeString","Uint8ClampedArray","charCode","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_void","isVoid","__emscripten_date_now","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","__gmtime_js","time","tmPtr","date","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","__localtime_js","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","getTimezoneOffset","summerOffset","winterOffset","dst","__mktime_js","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","_tzset_impl","timezone","daylight","tzname","currentYear","winter","summer","stdTimezoneOffset","extractZone","match","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","__tzset_js","called","_abort","reallyNegative","Infinity","convertI32PairToI53","lo","hi","convertU32PairToI53","reSign","bits","half","pow","unSign","formatString","format","textIndex","argIndex","prepVararg","getNextArg","currArg","startTextIndex","flagAlwaysSigned","flagLeftAlign","flagAlternative","flagZeroPad","flagPadSign","flagsLoop","width","precisionSet","precision","precisionChr","argSize","nextNext","argText","limit","currAbsArg","prefix","parseInt","toUpperCase","chr","isNaN","isFinite","isGeneral","effectivePrecision","exponent","toExponential","test","toFixed","argLength","_strlen","traverseStack","callee","funcname","first","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","RegExp","firefoxRe","chromeRe","line","symbolName","lineno","column","haveSourceMap","originalPositionFor","source","_emscripten_log_js","debug","_emscripten_log","_emscripten_get_heap_max","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","navigator","languages","env","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","_fd_read","pnum","num","_fd_seek","offset_low","offset_high","newOffset","HIGH_OFFSET","DOUBLE_LIMIT","_fd_write","_setTempRet0","readMode","writeMode","stringy","u8array","numBytesWritten","_emscripten_stack_init","calledRun","runCaller","run","stackCheckInit","doRun","gl","openWebglAlignment","vertexShaderScript","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","render","w","h","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","initVideo","playAudio","initAudio","kBps","audioCode","videoCode","wasmError","MEDIA_TYPE","video","WORKER_SEND_TYPE","audioDecode","videoDecode","updateConfig","ENCODED_VIDEO_TYPE","delta","of","Instance","formatVideoDecoderConfigure","avcC","codecArray","codecString","j","codec","description","tempAudioBuffer","wcsVideoDecoder","hasInit","isEmitInfo","offscreenCanvas","offscreenCanvasCtx","VideoDecoder","videoFrame","opt","codedWidth","codedHeight","OffscreenCanvas","getContext","drawImage","image_bitmap","transferToImageBitmap","delay","ts","payload","isIFrame","videoCodec","setVideoCodec","config","configure","chunk","EncodedVideoChunk","reset","initAudioPlanar","channels","samplerate","sampleRate","outputArray","remain","playAudioPlanar","frameCount","origin","channel","setAudioCodec","setVideoSize","qsize","offscreenCanvasGL","webglObj","createWebGL","draw","yData","uData","vData","getDelay","firstTimestamp","startTimestamp","localTimestamp","timeTimestamp","resetDelay","_doDecode","loop","dropping","stopId","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","JSON","parse","sample_rate"],"mappings":";;;;;;;;;;;;;;;;;;;;;CAAA,MAAIA,MAAM,GAAC,OAAOA,MAAP,IAAe,WAAf,GAA2BA,MAA3B,GAAkC,EAA7C;CAAgD,MAAIA,MAAM,GAAC,EAAX;;CAAcA,EAAAA,MAAM,CAACC,KAAP,GAAa,UAASC,IAAT,EAAc;CAACC,IAAAA,OAAO,CAACC,GAAR,CAAY,sBAAZ,EAAmCF,IAAnC;CAAyC,GAArE;;CAAsEF,EAAAA,MAAM,CAACK,QAAP,GAAgB,UAASH,IAAT,EAAc;CAACC,IAAAA,OAAO,CAACG,IAAR,CAAa,sBAAb,EAAoCJ,IAApC;CAA0CK,IAAAA,WAAW,CAAC;CAACC,MAAAA,GAAG,EAAC,WAAL;CAAiBC,MAAAA,OAAO,EAACP;CAAzB,KAAD,CAAX;CAA4C,GAArH;;CAAsH,MAAIQ,eAAe,GAACC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAiBZ,MAAjB,CAApB;CAA+D,MAAIa,WAAW,GAAC,gBAAhB;;CAA6E,MAAIC,kBAAkB,GAAC,OAAOC,MAAP,IAAe,QAAtC;CAA+C,MAAIC,qBAAqB,GAAC,OAAOC,aAAP,IAAsB,UAAhD;CAA2D,MAAIC,mBAAmB,GAAC,OAAOC,OAAP,IAAgB,QAAhB,IAA0B,OAAOA,OAAO,CAACC,QAAf,IAAyB,QAAnD,IAA6D,OAAOD,OAAO,CAACC,QAAR,CAAiBC,IAAxB,IAA8B,QAAnH;CAA4H,MAAIC,oBAAoB,GAAC,CAACR,kBAAD,IAAqB,CAACI,mBAAtB,IAA2C,CAACF,qBAArE;;CAA2F,MAAGhB,MAAM,CAAC,aAAD,CAAT,EAAyB;CAAC,UAAM,IAAIuB,KAAJ,CAAU,kKAAV,CAAN;CAAoL;;CAAA,MAAIC,eAAe,GAAC,EAApB;;CAAuB,WAASC,UAAT,CAAoBC,IAApB,EAAyB;CAAC,QAAG1B,MAAM,CAAC,YAAD,CAAT,EAAwB;CAAC,aAAOA,MAAM,CAAC,YAAD,CAAN,CAAqB0B,IAArB,EAA0BF,eAA1B,CAAP;CAAkD;;CAAA,WAAOA,eAAe,GAACE,IAAvB;CAA4B;;CAAA,MAAIC,KAAJ,EAAUC,SAAV,EAAoBC,UAApB;;CAAwN,MAAIC,EAAJ;CAAO,MAAIC,QAAJ;CAAa,MAAIC,aAAJ;;CAAkB,MAAGd,mBAAH,EAAuB;CAAC,QAAG,EAAE,OAAOC,OAAP,IAAgB,QAAhB,IAA0B,OAAOc,eAAP,IAAgB,UAA5C,CAAH,EAA2D,MAAM,IAAIV,KAAJ,CAAU,wLAAV,CAAN;;CAA0M,QAAGP,qBAAH,EAAyB;CAACQ,MAAAA,eAAe,GAACU,wBAAe,CAACC,OAAhB,CAAwBX,eAAxB,IAAyC,GAAzD;CAA6D,KAAvF,MAA2F;CAACA,MAAAA,eAAe,GAACY,SAAS,GAAC,GAA1B;CAA8B;;CAAAJ,IAAAA,aAAa,GAAE,MAAI;CAAC,UAAG,CAACD,QAAJ,EAAa;CAACD,QAAAA,EAAE,GAACO,sBAAH;CAAiBN,QAAAA,QAAQ,GAACG,wBAAT;CAAyB;CAAC,KAA7E;;CAA+EP,IAAAA,KAAK,GAAC,SAASW,UAAT,CAAoBC,QAApB,EAA6BC,MAA7B,EAAoC;CAACR,MAAAA,aAAa;CAAGO,MAAAA,QAAQ,GAACR,QAAQ,CAAC,WAAD,CAAR,CAAsBQ,QAAtB,CAAT;CAAyC,aAAOT,EAAE,CAACW,YAAH,CAAgBF,QAAhB,EAAyBC,MAAM,GAACE,SAAD,GAAW,MAA1C,CAAP;CAAyD,KAA7J;;CAA8Jb,IAAAA,UAAU,GAAEU,QAAQ,IAAE;CAAC,UAAII,GAAG,GAAChB,KAAK,CAACY,QAAD,EAAU,IAAV,CAAb;;CAA6B,UAAG,CAACI,GAAG,CAACC,MAAR,EAAe;CAACD,QAAAA,GAAG,GAAC,IAAIE,UAAJ,CAAeF,GAAf,CAAJ;CAAwB;;CAAAG,MAAAA,MAAM,CAACH,GAAG,CAACC,MAAL,CAAN;CAAmB,aAAOD,GAAP;CAAW,KAA1H;;CAA4Hf,IAAAA,SAAS,GAAE,CAACW,QAAD,EAAUQ,MAAV,EAAiBC,OAAjB,KAA2B;CAAChB,MAAAA,aAAa;CAAGO,MAAAA,QAAQ,GAACR,QAAQ,CAAC,WAAD,CAAR,CAAsBQ,QAAtB,CAAT;CAAyCT,MAAAA,EAAE,CAACmB,QAAH,CAAYV,QAAZ,EAAqB,UAASW,GAAT,EAAaC,IAAb,EAAkB;CAAC,YAAGD,GAAH,EAAOF,OAAO,CAACE,GAAD,CAAP,CAAP,KAAyBH,MAAM,CAACI,IAAI,CAACP,MAAN,CAAN;CAAoB,OAArF;CAAuF,KAAvL;;CAAyL,QAAGzB,OAAO,CAAC,MAAD,CAAP,CAAgBiC,MAAhB,GAAuB,CAA1B,EAA4B;CAACvC,MAAAA,WAAW,GAACM,OAAO,CAAC,MAAD,CAAP,CAAgB,CAAhB,EAAmBkC,OAAnB,CAA2B,KAA3B,EAAiC,GAAjC,CAAZ;CAAkD;;CAAAC,IAAWnC,OAAO,CAAC,MAAD,CAAP,CAAgBoC,KAAhB,CAAsB,CAAtB,CAAX;;CAAoC,IAA8B;CAACC,MAAAA,MAAM,CAAC,SAAD,CAAN,GAAkBxD,MAAlB;CAAyB;;CAAAmB,IAAAA,OAAO,CAAC,IAAD,CAAP,CAAc,mBAAd,EAAkC,UAASsC,EAAT,EAAY;CAAC,UAAG,EAAEA,EAAE,YAAYC,UAAhB,CAAH,EAA+B;CAAC,cAAMD,EAAN;CAAS;CAAC,KAAzF;CAA2FtC,IAAAA,OAAO,CAAC,IAAD,CAAP,CAAc,oBAAd,EAAmC,UAASwC,MAAT,EAAgB;CAAC,YAAMA,MAAN;CAAa,KAAjE;;CAAmN3D,IAAAA,MAAM,CAAC,SAAD,CAAN,GAAkB,YAAU;CAAC,aAAM,4BAAN;CAAmC,KAAhE;CAAiE,GAAn9C,MAAw9C,IAAGsB,oBAAH,EAAwB;CAAC,QAAG,OAAOH,OAAP,IAAgB,QAAhB,IAA0B,OAAOc,eAAP,KAAiB,UAA3C,IAAuD,OAAOlB,MAAP,IAAe,QAAtE,IAAgF,OAAOE,aAAP,IAAsB,UAAzG,EAAoH,MAAM,IAAIM,KAAJ,CAAU,wLAAV,CAAN;;CAA0M,QAAG,OAAOqC,IAAP,IAAa,WAAhB,EAA4B;CAACjC,MAAAA,KAAK,GAAC,SAASW,UAAT,CAAoBuB,CAApB,EAAsB;CAAC,eAAOD,IAAI,CAACC,CAAD,CAAX;CAAe,OAA5C;CAA6C;;CAAAhC,IAAAA,UAAU,GAAC,SAASA,UAAT,CAAoBgC,CAApB,EAAsB;CAAC,UAAIV,IAAJ;;CAAS,UAAG,OAAOW,UAAP,IAAmB,UAAtB,EAAiC;CAAC,eAAO,IAAIjB,UAAJ,CAAeiB,UAAU,CAACD,CAAD,CAAzB,CAAP;CAAqC;;CAAAV,MAAAA,IAAI,GAACS,IAAI,CAACC,CAAD,EAAG,QAAH,CAAT;CAAsBf,MAAAA,MAAM,CAAC,OAAOK,IAAP,IAAa,QAAd,CAAN;CAA8B,aAAOA,IAAP;CAAY,KAAlL;;CAAmLvB,IAAAA,SAAS,GAAC,SAASA,SAAT,CAAmBiC,CAAnB,EAAqBd,MAArB,EAA4BC,OAA5B,EAAoC;CAACe,MAAAA,UAAU,CAAC,MAAIhB,MAAM,CAAClB,UAAU,CAACgC,CAAD,CAAX,CAAX,EAA2B,CAA3B,CAAV;CAAwC,KAAvF;;CAAwF,QAAG,OAAOG,UAAP,IAAmB,WAAtB,EAAkC;CAACV,MAAWU,UAAX;CAAsB;;CAA6J,QAAG,OAAO/D,KAAP,IAAc,WAAjB,EAA6B;CAAC,UAAG,OAAOE,OAAP,IAAgB,WAAnB,EAA+BA,OAAO,GAAC,EAAR;CAAWA,MAAAA,OAAO,CAACC,GAAR,GAAYH,KAAZ;CAAkBE,MAAAA,OAAO,CAACG,IAAR,GAAaH,OAAO,CAAC8D,KAAR,GAAc,OAAO5D,QAAP,IAAiB,WAAjB,GAA6BA,QAA7B,GAAsCJ,KAAjE;CAAuE;CAAC,GAApiC,MAAyiC,IAAGa,kBAAkB,IAAEE,qBAAvB,EAA6C;CAAC,QAAGA,qBAAH,EAAyB;CAACQ,MAAAA,eAAe,GAAC0C,IAAI,CAACC,QAAL,CAAcC,IAA9B;CAAmC,KAA7D,MAAkE,IAAG,OAAOC,QAAP,IAAiB,WAAjB,IAA8BA,QAAQ,CAACC,aAA1C,EAAwD;CAAC9C,MAAAA,eAAe,GAAC6C,QAAQ,CAACC,aAAT,CAAuBC,GAAvC;CAA2C;;CAAA,QAAG/C,eAAe,CAACgD,OAAhB,CAAwB,OAAxB,MAAmC,CAAtC,EAAwC;CAAChD,MAAAA,eAAe,GAACA,eAAe,CAACiD,MAAhB,CAAuB,CAAvB,EAAyBjD,eAAe,CAAC6B,OAAhB,CAAwB,QAAxB,EAAiC,EAAjC,EAAqCqB,WAArC,CAAiD,GAAjD,IAAsD,CAA/E,CAAhB;CAAkG,KAA3I,MAA+I;CAAClD,MAAAA,eAAe,GAAC,EAAhB;CAAmB;;CAAA,QAAG,EAAE,OAAOT,MAAP,IAAe,QAAf,IAAyB,OAAOE,aAAP,IAAsB,UAAjD,CAAH,EAAgE,MAAM,IAAIM,KAAJ,CAAU,wLAAV,CAAN;CAA0M;CAACI,MAAAA,KAAK,GAAEgD,GAAG,IAAE;CAAC,YAAIC,GAAG,GAAC,IAAIC,cAAJ,EAAR;CAA2BD,QAAAA,GAAG,CAACE,IAAJ,CAAS,KAAT,EAAeH,GAAf,EAAmB,KAAnB;CAA0BC,QAAAA,GAAG,CAACG,IAAJ,CAAS,IAAT;CAAe,eAAOH,GAAG,CAACI,YAAX;CAAwB,OAAzG;;CAA2G,UAAGhE,qBAAH,EAAyB;CAACa,QAAAA,UAAU,GAAE8C,GAAG,IAAE;CAAC,cAAIC,GAAG,GAAC,IAAIC,cAAJ,EAAR;CAA2BD,UAAAA,GAAG,CAACE,IAAJ,CAAS,KAAT,EAAeH,GAAf,EAAmB,KAAnB;CAA0BC,UAAAA,GAAG,CAACK,YAAJ,GAAiB,aAAjB;CAA+BL,UAAAA,GAAG,CAACG,IAAJ,CAAS,IAAT;CAAe,iBAAO,IAAIlC,UAAJ,CAAe+B,GAAG,CAACM,QAAnB,CAAP;CAAoC,SAAzJ;CAA2J;;CAAAtD,MAAAA,SAAS,GAAE,CAAC+C,GAAD,EAAK5B,MAAL,EAAYC,OAAZ,KAAsB;CAAC,YAAI4B,GAAG,GAAC,IAAIC,cAAJ,EAAR;CAA2BD,QAAAA,GAAG,CAACE,IAAJ,CAAS,KAAT,EAAeH,GAAf,EAAmB,IAAnB;CAAyBC,QAAAA,GAAG,CAACK,YAAJ,GAAiB,aAAjB;;CAA+BL,QAAAA,GAAG,CAAC7B,MAAJ,GAAY,MAAI;CAAC,cAAG6B,GAAG,CAACO,MAAJ,IAAY,GAAZ,IAAiBP,GAAG,CAACO,MAAJ,IAAY,CAAZ,IAAeP,GAAG,CAACM,QAAvC,EAAgD;CAACnC,YAAAA,MAAM,CAAC6B,GAAG,CAACM,QAAL,CAAN;CAAqB;CAAO;;CAAAlC,UAAAA,OAAO;CAAG,SAAxG;;CAA0G4B,QAAAA,GAAG,CAAC5B,OAAJ,GAAYA,OAAZ;CAAoB4B,QAAAA,GAAG,CAACG,IAAJ,CAAS,IAAT;CAAe,OAAlQ;CAAoQ;CAA6C,GAAntC,MAAutC;CAAC,UAAM,IAAIxD,KAAJ,CAAU,6BAAV,CAAN;CAA+C;;CAAA,MAAI6D,GAAG,GAACpF,MAAM,CAAC,OAAD,CAAN,IAAiBG,OAAO,CAACC,GAAR,CAAYiF,IAAZ,CAAiBlF,OAAjB,CAAzB;CAAmD,MAAI+C,GAAG,GAAClD,MAAM,CAAC,UAAD,CAAN,IAAoBG,OAAO,CAACG,IAAR,CAAa+E,IAAb,CAAkBlF,OAAlB,CAA5B;CAAuDQ,EAAAA,MAAM,CAACC,MAAP,CAAcZ,MAAd,EAAqBU,eAArB;CAAsCA,EAAAA,eAAe,GAAC,IAAhB;CAAqB4E,EAAAA,sBAAsB;CAAG,MAAGtF,MAAM,CAAC,WAAD,CAAT,EAAuBsD;CAA+BiC,EAAAA,gBAAgB,CAAC,WAAD,EAAa,YAAb,CAAhB;CAA2C,MAAGvF,MAAM,CAAC,aAAD,CAAT,EAAyBa,WAAW,GAACb,MAAM,CAAC,aAAD,CAAlB;CAAkCuF,EAAAA,gBAAgB,CAAC,aAAD,EAAe,aAAf,CAAhB;CAA8C,MAAGvF,MAAM,CAAC,MAAD,CAAT,EAAkBwF;CAAqBD,EAAAA,gBAAgB,CAAC,MAAD,EAAQ,OAAR,CAAhB;CAAiCzC,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,4BAAD,CAAb,IAA6C,WAA9C,EAA0D,qFAA1D,CAAN;CAAuJ8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,sBAAD,CAAb,IAAuC,WAAxC,EAAoD,+EAApD,CAAN;CAA2I8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,wBAAD,CAAb,IAAyC,WAA1C,EAAsD,iFAAtD,CAAN;CAA+I8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,sBAAD,CAAb,IAAuC,WAAxC,EAAoD,+EAApD,CAAN;CAA2I8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,MAAD,CAAb,IAAuB,WAAxB,EAAoC,qDAApC,CAAN;CAAiG8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,WAAD,CAAb,IAA4B,WAA7B,EAAyC,8DAAzC,CAAN;CAA+G8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,YAAD,CAAb,IAA6B,WAA9B,EAA0C,gEAA1C,CAAN;CAAkH8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,gBAAD,CAAb,IAAiC,WAAlC,EAA8C,wEAA9C,CAAN;CAA8H8C,EAAAA,MAAM,CAAC,OAAO9C,MAAM,CAAC,cAAD,CAAb,IAA+B,WAAhC,EAA4C,4DAA5C,CAAN;CAAgHuF,EAAAA,gBAAgB,CAAC,MAAD,EAAQ,OAAR,CAAhB;CAAiCA,EAAAA,gBAAgB,CAAC,WAAD,EAAa,WAAb,CAAhB;CAA0CA,EAAAA,gBAAgB,CAAC,YAAD,EAAc,YAAd,CAAhB;CAA4CA,EAAAA,gBAAgB,CAAC,gBAAD,EAAkB,gBAAlB,CAAhB;CAAoDzC,EAAAA,MAAM,CAAC,CAACxB,oBAAF,EAAuB,sGAAvB,CAAN;;CAAwJ,WAASmE,QAAT,CAAkBvF,IAAlB,EAAuB;CAAC,QAAG,CAACuF,QAAQ,CAACC,KAAb,EAAmBD,QAAQ,CAACC,KAAT,GAAe,EAAf;;CAAkB,QAAG,CAACD,QAAQ,CAACC,KAAT,CAAexF,IAAf,CAAJ,EAAyB;CAACuF,MAAAA,QAAQ,CAACC,KAAT,CAAexF,IAAf,IAAqB,CAArB;CAAuBgD,MAAAA,GAAG,CAAChD,IAAD,CAAH;CAAU;CAAC;;CAA6gD,WAASqF,gBAAT,CAA0BI,IAA1B,EAA+BC,OAA/B,EAAuC;CAAC,QAAG,CAACjF,MAAM,CAACkF,wBAAP,CAAgC7F,MAAhC,EAAuC2F,IAAvC,CAAJ,EAAiD;CAAChF,MAAAA,MAAM,CAACmF,cAAP,CAAsB9F,MAAtB,EAA6B2F,IAA7B,EAAkC;CAACI,QAAAA,YAAY,EAAC,IAAd;CAAmBC,QAAAA,GAAG,EAAC,YAAU;CAACC,UAAAA,KAAK,CAAC,YAAUN,IAAV,GAAe,gCAAf,GAAgDC,OAAhD,GAAwD,iIAAzD,CAAL;CAAiM;CAAnO,OAAlC;CAAwQ;CAAC;;CAAA,WAASM,iBAAT,CAA2BP,IAA3B,EAAgC;CAAC,QAAGhF,MAAM,CAACkF,wBAAP,CAAgC7F,MAAhC,EAAuC2F,IAAvC,CAAH,EAAgD;CAACM,MAAAA,KAAK,CAAC,aAAWN,IAAX,GAAgB,sBAAhB,GAAuCA,IAAvC,GAA4C,0CAA7C,CAAL;CAA8F;CAAC;;CAAA,WAASQ,iBAAT,CAA2BC,GAA3B,EAA+BC,SAA/B,EAAyC;CAAC,QAAIC,GAAG,GAAC,MAAIF,GAAJ,GAAQ,sEAAhB;;CAAuF,QAAGC,SAAH,EAAa;CAACC,MAAAA,GAAG,IAAE,0FAAL;CAAgG;;CAAA,WAAOA,GAAP;CAAW;;CAAA,WAASC,uBAAT,CAAiCH,GAAjC,EAAqCC,SAArC,EAA+C;CAAC,QAAG,CAAC1F,MAAM,CAACkF,wBAAP,CAAgC7F,MAAhC,EAAuCoG,GAAvC,CAAJ,EAAgD;CAACzF,MAAAA,MAAM,CAACmF,cAAP,CAAsB9F,MAAtB,EAA6BoG,GAA7B,EAAiC;CAACL,QAAAA,YAAY,EAAC,IAAd;CAAmBC,QAAAA,GAAG,EAAC,YAAU;CAACC,UAAAA,KAAK,CAACE,iBAAiB,CAACC,GAAD,EAAKC,SAAL,CAAlB,CAAL;CAAwC;CAA1E,OAAjC;CAA8G;CAAC;;CAAA,WAASG,yBAAT,CAAmCJ,GAAnC,EAAuCC,SAAvC,EAAiD;CAAC,QAAG,CAAC1F,MAAM,CAACkF,wBAAP,CAAgC7F,MAAhC,EAAuCoG,GAAvC,CAAJ,EAAgD;CAACpG,MAAAA,MAAM,CAACoG,GAAD,CAAN,GAAa,MAAIH,KAAK,CAACE,iBAAiB,CAACC,GAAD,EAAKC,SAAL,CAAlB,CAAtB;CAA0D;CAAC;;CAAuD,MAAII,UAAJ;CAAe,MAAGzG,MAAM,CAAC,YAAD,CAAT,EAAwByG,UAAU,GAACzG,MAAM,CAAC,YAAD,CAAjB;CAAgCuF,EAAAA,gBAAgB,CAAC,YAAD,EAAc,YAAd,CAAhB;CAA4C,EAAkBvF,MAAM,CAAC,eAAD,CAAN,IAAyB;CAAKuF,EAAAA,gBAAgB,CAAC,eAAD,EAAiB,eAAjB,CAAhB;;CAAkD,MAAG,OAAOmB,WAAP,IAAoB,QAAvB,EAAgC;CAACT,IAAAA,KAAK,CAAC,iCAAD,CAAL;CAAyC;;CAAA,MAAIU,UAAJ;CAAe,MAAIC,KAAK,GAAC,KAAV;;CAA+B,WAAS9D,MAAT,CAAgB+D,SAAhB,EAA0B3G,IAA1B,EAA+B;CAAC,QAAG,CAAC2G,SAAJ,EAAc;CAACZ,MAAAA,KAAK,CAAC,sBAAoB/F,IAAI,GAAC,OAAKA,IAAN,GAAW,EAAnC,CAAD,CAAL;CAA8C;CAAC;CAAkhC,MAAI4G,WAAW,GAAC,OAAOC,WAAP,IAAoB,WAApB,GAAgC,IAAIA,WAAJ,CAAgB,MAAhB,CAAhC,GAAwDrE,SAAxE;;CAAkF,WAASsE,iBAAT,CAA2BC,WAA3B,EAAuCC,GAAvC,EAA2CC,cAA3C,EAA0D;CAAC,QAAIC,MAAM,GAACF,GAAG,GAACC,cAAf;CAA8B,QAAIE,MAAM,GAACH,GAAX;;CAAe,WAAMD,WAAW,CAACI,MAAD,CAAX,IAAqB,EAAEA,MAAM,IAAED,MAAV,CAA3B,EAA6C,EAAEC,MAAF;;CAAS,QAAGA,MAAM,GAACH,GAAP,GAAW,EAAX,IAAeD,WAAW,CAACrE,MAA3B,IAAmCkE,WAAtC,EAAkD;CAAC,aAAOA,WAAW,CAACQ,MAAZ,CAAmBL,WAAW,CAACM,QAAZ,CAAqBL,GAArB,EAAyBG,MAAzB,CAAnB,CAAP;CAA4D,KAA/G,MAAmH;CAAC,UAAIG,GAAG,GAAC,EAAR;;CAAW,aAAMN,GAAG,GAACG,MAAV,EAAiB;CAAC,YAAII,EAAE,GAACR,WAAW,CAACC,GAAG,EAAJ,CAAlB;;CAA0B,YAAG,EAAEO,EAAE,GAAC,GAAL,CAAH,EAAa;CAACD,UAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoBF,EAApB,CAAL;CAA6B;CAAS;;CAAA,YAAIG,EAAE,GAACX,WAAW,CAACC,GAAG,EAAJ,CAAX,GAAmB,EAA1B;;CAA6B,YAAG,CAACO,EAAE,GAAC,GAAJ,KAAU,GAAb,EAAiB;CAACD,UAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoB,CAACF,EAAE,GAAC,EAAJ,KAAS,CAAT,GAAWG,EAA/B,CAAL;CAAwC;CAAS;;CAAA,YAAIC,EAAE,GAACZ,WAAW,CAACC,GAAG,EAAJ,CAAX,GAAmB,EAA1B;;CAA6B,YAAG,CAACO,EAAE,GAAC,GAAJ,KAAU,GAAb,EAAiB;CAACA,UAAAA,EAAE,GAAC,CAACA,EAAE,GAAC,EAAJ,KAAS,EAAT,GAAYG,EAAE,IAAE,CAAhB,GAAkBC,EAArB;CAAwB,SAA1C,MAA8C;CAAC,cAAG,CAACJ,EAAE,GAAC,GAAJ,KAAU,GAAb,EAAiBhC,QAAQ,CAAC,kCAAgCgC,EAAE,CAACK,QAAH,CAAY,EAAZ,CAAhC,GAAgD,+EAAjD,CAAR;CAA0IL,UAAAA,EAAE,GAAC,CAACA,EAAE,GAAC,CAAJ,KAAQ,EAAR,GAAWG,EAAE,IAAE,EAAf,GAAkBC,EAAE,IAAE,CAAtB,GAAwBZ,WAAW,CAACC,GAAG,EAAJ,CAAX,GAAmB,EAA9C;CAAiD;;CAAA,YAAGO,EAAE,GAAC,KAAN,EAAY;CAACD,UAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoBF,EAApB,CAAL;CAA6B,SAA1C,MAA8C;CAAC,cAAIM,EAAE,GAACN,EAAE,GAAC,KAAV;CAAgBD,UAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoB,QAAMI,EAAE,IAAE,EAA9B,EAAiC,QAAMA,EAAE,GAAC,IAA1C,CAAL;CAAqD;CAAC;CAAC;;CAAA,WAAOP,GAAP;CAAW;;CAAA,WAASQ,YAAT,CAAsBC,GAAtB,EAA0Bd,cAA1B,EAAyC;CAAC,WAAOc,GAAG,GAACjB,iBAAiB,CAACkB,MAAD,EAAQD,GAAR,EAAYd,cAAZ,CAAlB,GAA8C,EAAxD;CAA2D;;CAAA,WAASgB,iBAAT,CAA2BX,GAA3B,EAA+BY,IAA/B,EAAoCC,MAApC,EAA2CC,eAA3C,EAA2D;CAAC,QAAG,EAAEA,eAAe,GAAC,CAAlB,CAAH,EAAwB,OAAO,CAAP;CAAS,QAAIC,QAAQ,GAACF,MAAb;CAAoB,QAAIjB,MAAM,GAACiB,MAAM,GAACC,eAAP,GAAuB,CAAlC;;CAAoC,SAAI,IAAIE,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAChB,GAAG,CAACpE,MAAlB,EAAyB,EAAEoF,CAA3B,EAA6B;CAAC,UAAIC,CAAC,GAACjB,GAAG,CAACkB,UAAJ,CAAeF,CAAf,CAAN;;CAAwB,UAAGC,CAAC,IAAE,KAAH,IAAUA,CAAC,IAAE,KAAhB,EAAsB;CAAC,YAAIb,EAAE,GAACJ,GAAG,CAACkB,UAAJ,CAAe,EAAEF,CAAjB,CAAP;CAA2BC,QAAAA,CAAC,GAAC,SAAO,CAACA,CAAC,GAAC,IAAH,KAAU,EAAjB,IAAqBb,EAAE,GAAC,IAA1B;CAA+B;;CAAA,UAAGa,CAAC,IAAE,GAAN,EAAU;CAAC,YAAGJ,MAAM,IAAEjB,MAAX,EAAkB;CAAMgB,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAeI,CAAf;CAAiB,OAApD,MAAyD,IAAGA,CAAC,IAAE,IAAN,EAAW;CAAC,YAAGJ,MAAM,GAAC,CAAP,IAAUjB,MAAb,EAAoB;CAAMgB,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,IAAE,CAAtB;CAAwBL,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,GAAC,EAArB;CAAwB,OAAtF,MAA2F,IAAGA,CAAC,IAAE,KAAN,EAAY;CAAC,YAAGJ,MAAM,GAAC,CAAP,IAAUjB,MAAb,EAAoB;CAAMgB,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,IAAE,EAAtB;CAAyBL,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,IAAE,CAAH,GAAK,EAAxB;CAA2BL,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,GAAC,EAArB;CAAwB,OAAnH,MAAuH;CAAC,YAAGJ,MAAM,GAAC,CAAP,IAAUjB,MAAb,EAAoB;CAAM,YAAGqB,CAAC,GAAC,OAAL,EAAahD,QAAQ,CAAC,kCAAgCgD,CAAC,CAACX,QAAF,CAAW,EAAX,CAAhC,GAA+C,wIAAhD,CAAR;CAAkMM,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,IAAE,EAAtB;CAAyBL,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,IAAE,EAAH,GAAM,EAAzB;CAA4BL,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,IAAE,CAAH,GAAK,EAAxB;CAA2BL,QAAAA,IAAI,CAACC,MAAM,EAAP,CAAJ,GAAe,MAAII,CAAC,GAAC,EAArB;CAAwB;CAAC;;CAAAL,IAAAA,IAAI,CAACC,MAAD,CAAJ,GAAa,CAAb;CAAe,WAAOA,MAAM,GAACE,QAAd;CAAuB;;CAAA,WAASI,YAAT,CAAsBnB,GAAtB,EAA0BoB,MAA1B,EAAiCN,eAAjC,EAAiD;CAACxF,IAAAA,MAAM,CAAC,OAAOwF,eAAP,IAAwB,QAAzB,EAAkC,2HAAlC,CAAN;CAAqK,WAAOH,iBAAiB,CAACX,GAAD,EAAKU,MAAL,EAAYU,MAAZ,EAAmBN,eAAnB,CAAxB;CAA4D;;CAAA,WAASO,eAAT,CAAyBrB,GAAzB,EAA6B;CAAC,QAAIsB,GAAG,GAAC,CAAR;;CAAU,SAAI,IAAIN,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAChB,GAAG,CAACpE,MAAlB,EAAyB,EAAEoF,CAA3B,EAA6B;CAAC,UAAIC,CAAC,GAACjB,GAAG,CAACkB,UAAJ,CAAeF,CAAf,CAAN;CAAwB,UAAGC,CAAC,IAAE,KAAH,IAAUA,CAAC,IAAE,KAAhB,EAAsBA,CAAC,GAAC,SAAO,CAACA,CAAC,GAAC,IAAH,KAAU,EAAjB,IAAqBjB,GAAG,CAACkB,UAAJ,CAAe,EAAEF,CAAjB,IAAoB,IAA3C;CAAgD,UAAGC,CAAC,IAAE,GAAN,EAAU,EAAEK,GAAF,CAAV,KAAqB,IAAGL,CAAC,IAAE,IAAN,EAAWK,GAAG,IAAE,CAAL,CAAX,KAAuB,IAAGL,CAAC,IAAE,KAAN,EAAYK,GAAG,IAAE,CAAL,CAAZ,KAAwBA,GAAG,IAAE,CAAL;CAAO;;CAAA,WAAOA,GAAP;CAAW;;CAAA,MAAIC,YAAY,GAAC,OAAOhC,WAAP,IAAoB,WAApB,GAAgC,IAAIA,WAAJ,CAAgB,UAAhB,CAAhC,GAA4DrE,SAA7E;;CAAuF,WAASsG,aAAT,CAAuBf,GAAvB,EAA2Bd,cAA3B,EAA0C;CAACrE,IAAAA,MAAM,CAACmF,GAAG,GAAC,CAAJ,IAAO,CAAR,EAAU,+DAAV,CAAN;CAAiF,QAAIZ,MAAM,GAACY,GAAX;CAAe,QAAIf,GAAG,GAACG,MAAM,IAAE,CAAhB;CAAkB,QAAI4B,MAAM,GAAC/B,GAAG,GAACC,cAAc,GAAC,CAA9B;;CAAgC,WAAM,EAAED,GAAG,IAAE+B,MAAP,KAAgBC,OAAO,CAAChC,GAAD,CAA7B,EAAmC,EAAEA,GAAF;;CAAMG,IAAAA,MAAM,GAACH,GAAG,IAAE,CAAZ;;CAAc,QAAGG,MAAM,GAACY,GAAP,GAAW,EAAX,IAAec,YAAlB,EAA+B;CAAC,aAAOA,YAAY,CAACzB,MAAb,CAAoBY,MAAM,CAACX,QAAP,CAAgBU,GAAhB,EAAoBZ,MAApB,CAApB,CAAP;CAAwD,KAAxF,MAA4F;CAAC,UAAIG,GAAG,GAAC,EAAR;;CAAW,WAAI,IAAIgB,CAAC,GAAC,CAAV,EAAY,EAAEA,CAAC,IAAErB,cAAc,GAAC,CAApB,CAAZ,EAAmC,EAAEqB,CAArC,EAAuC;CAAC,YAAIW,QAAQ,GAACC,MAAM,CAACnB,GAAG,GAACO,CAAC,GAAC,CAAN,IAAS,CAAV,CAAnB;CAAgC,YAAGW,QAAQ,IAAE,CAAb,EAAe;CAAM3B,QAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoBwB,QAApB,CAAL;CAAmC;;CAAA,aAAO3B,GAAP;CAAW;CAAC;;CAAA,WAAS6B,aAAT,CAAuB7B,GAAvB,EAA2BoB,MAA3B,EAAkCN,eAAlC,EAAkD;CAACxF,IAAAA,MAAM,CAAC8F,MAAM,GAAC,CAAP,IAAU,CAAX,EAAa,+DAAb,CAAN;CAAoF9F,IAAAA,MAAM,CAAC,OAAOwF,eAAP,IAAwB,QAAzB,EAAkC,4HAAlC,CAAN;;CAAsK,QAAGA,eAAe,KAAG5F,SAArB,EAA+B;CAAC4F,MAAAA,eAAe,GAAC,UAAhB;CAA2B;;CAAA,QAAGA,eAAe,GAAC,CAAnB,EAAqB,OAAO,CAAP;CAASA,IAAAA,eAAe,IAAE,CAAjB;CAAmB,QAAIgB,QAAQ,GAACV,MAAb;CAAoB,QAAIW,eAAe,GAACjB,eAAe,GAACd,GAAG,CAACpE,MAAJ,GAAW,CAA3B,GAA6BkF,eAAe,GAAC,CAA7C,GAA+Cd,GAAG,CAACpE,MAAvE;;CAA8E,SAAI,IAAIoF,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACe,eAAd,EAA8B,EAAEf,CAAhC,EAAkC;CAAC,UAAIW,QAAQ,GAAC3B,GAAG,CAACkB,UAAJ,CAAeF,CAAf,CAAb;CAA+BY,MAAAA,MAAM,CAACR,MAAM,IAAE,CAAT,CAAN,GAAkBO,QAAlB;CAA2BP,MAAAA,MAAM,IAAE,CAAR;CAAU;;CAAAQ,IAAAA,MAAM,CAACR,MAAM,IAAE,CAAT,CAAN,GAAkB,CAAlB;CAAoB,WAAOA,MAAM,GAACU,QAAd;CAAuB;;CAAA,WAASE,gBAAT,CAA0BhC,GAA1B,EAA8B;CAAC,WAAOA,GAAG,CAACpE,MAAJ,GAAW,CAAlB;CAAoB;;CAAA,WAASqG,aAAT,CAAuBxB,GAAvB,EAA2Bd,cAA3B,EAA0C;CAACrE,IAAAA,MAAM,CAACmF,GAAG,GAAC,CAAJ,IAAO,CAAR,EAAU,gEAAV,CAAN;CAAkF,QAAIO,CAAC,GAAC,CAAN;CAAQ,QAAIhB,GAAG,GAAC,EAAR;;CAAW,WAAM,EAAEgB,CAAC,IAAErB,cAAc,GAAC,CAApB,CAAN,EAA6B;CAAC,UAAIuC,KAAK,GAACC,MAAM,CAAC1B,GAAG,GAACO,CAAC,GAAC,CAAN,IAAS,CAAV,CAAhB;CAA6B,UAAGkB,KAAK,IAAE,CAAV,EAAY;CAAM,QAAElB,CAAF;;CAAI,UAAGkB,KAAK,IAAE,KAAV,EAAgB;CAAC,YAAI3B,EAAE,GAAC2B,KAAK,GAAC,KAAb;CAAmBlC,QAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoB,QAAMI,EAAE,IAAE,EAA9B,EAAiC,QAAMA,EAAE,GAAC,IAA1C,CAAL;CAAqD,OAAzF,MAA6F;CAACP,QAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoB+B,KAApB,CAAL;CAAgC;CAAC;;CAAA,WAAOlC,GAAP;CAAW;;CAAA,WAASoC,aAAT,CAAuBpC,GAAvB,EAA2BoB,MAA3B,EAAkCN,eAAlC,EAAkD;CAACxF,IAAAA,MAAM,CAAC8F,MAAM,GAAC,CAAP,IAAU,CAAX,EAAa,gEAAb,CAAN;CAAqF9F,IAAAA,MAAM,CAAC,OAAOwF,eAAP,IAAwB,QAAzB,EAAkC,4HAAlC,CAAN;;CAAsK,QAAGA,eAAe,KAAG5F,SAArB,EAA+B;CAAC4F,MAAAA,eAAe,GAAC,UAAhB;CAA2B;;CAAA,QAAGA,eAAe,GAAC,CAAnB,EAAqB,OAAO,CAAP;CAAS,QAAIgB,QAAQ,GAACV,MAAb;CAAoB,QAAIvB,MAAM,GAACiC,QAAQ,GAAChB,eAAT,GAAyB,CAApC;;CAAsC,SAAI,IAAIE,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAChB,GAAG,CAACpE,MAAlB,EAAyB,EAAEoF,CAA3B,EAA6B;CAAC,UAAIW,QAAQ,GAAC3B,GAAG,CAACkB,UAAJ,CAAeF,CAAf,CAAb;;CAA+B,UAAGW,QAAQ,IAAE,KAAV,IAAiBA,QAAQ,IAAE,KAA9B,EAAoC;CAAC,YAAIU,cAAc,GAACrC,GAAG,CAACkB,UAAJ,CAAe,EAAEF,CAAjB,CAAnB;CAAuCW,QAAAA,QAAQ,GAAC,SAAO,CAACA,QAAQ,GAAC,IAAV,KAAiB,EAAxB,IAA4BU,cAAc,GAAC,IAApD;CAAyD;;CAAAF,MAAAA,MAAM,CAACf,MAAM,IAAE,CAAT,CAAN,GAAkBO,QAAlB;CAA2BP,MAAAA,MAAM,IAAE,CAAR;CAAU,UAAGA,MAAM,GAAC,CAAP,GAASvB,MAAZ,EAAmB;CAAM;;CAAAsC,IAAAA,MAAM,CAACf,MAAM,IAAE,CAAT,CAAN,GAAkB,CAAlB;CAAoB,WAAOA,MAAM,GAACU,QAAd;CAAuB;;CAAA,WAASQ,gBAAT,CAA0BtC,GAA1B,EAA8B;CAAC,QAAIsB,GAAG,GAAC,CAAR;;CAAU,SAAI,IAAIN,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAChB,GAAG,CAACpE,MAAlB,EAAyB,EAAEoF,CAA3B,EAA6B;CAAC,UAAIW,QAAQ,GAAC3B,GAAG,CAACkB,UAAJ,CAAeF,CAAf,CAAb;CAA+B,UAAGW,QAAQ,IAAE,KAAV,IAAiBA,QAAQ,IAAE,KAA9B,EAAoC,EAAEX,CAAF;CAAIM,MAAAA,GAAG,IAAE,CAAL;CAAO;;CAAA,WAAOA,GAAP;CAAW;;CAAA,WAASiB,YAAT,CAAsBvC,GAAtB,EAA0B;CAAC,QAAIwC,IAAI,GAACnB,eAAe,CAACrB,GAAD,CAAf,GAAqB,CAA9B;;CAAgC,QAAI7E,GAAG,GAACsH,OAAO,CAACD,IAAD,CAAf;;CAAsB,QAAGrH,GAAH,EAAOwF,iBAAiB,CAACX,GAAD,EAAK0C,KAAL,EAAWvH,GAAX,EAAeqH,IAAf,CAAjB;CAAsC,WAAOrH,GAAP;CAAW;;CAA4K,WAASwH,kBAAT,CAA4B3C,GAA5B,EAAgC5E,MAAhC,EAAuCwH,WAAvC,EAAmD;CAAC,SAAI,IAAI5B,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAChB,GAAG,CAACpE,MAAlB,EAAyB,EAAEoF,CAA3B,EAA6B;CAAC1F,MAAAA,MAAM,CAAC0E,GAAG,CAACkB,UAAJ,CAAeF,CAAf,OAAqBhB,GAAG,CAACkB,UAAJ,CAAeF,CAAf,IAAkB,GAAvC,CAAD,CAAN;CAAoD0B,MAAAA,KAAK,CAACtH,MAAM,MAAI,CAAX,CAAL,GAAmB4E,GAAG,CAACkB,UAAJ,CAAeF,CAAf,CAAnB;CAAqC;;CAAA,QAAG,CAAC4B,WAAJ,EAAgBF,KAAK,CAACtH,MAAM,IAAE,CAAT,CAAL,GAAiB,CAAjB;CAAmB;;CAAA,MAAIA,MAAJ,EAAWsH,KAAX,EAAiBhC,MAAjB,EAAwBkB,MAAxB,EAA+BF,OAA/B,EAAuCS,MAAvC,EAA8CU,OAA9C,EAAsDC,OAAtD,EAA8DC,OAA9D;;CAAsE,WAASC,0BAAT,CAAoCC,GAApC,EAAwC;CAAC7H,IAAAA,MAAM,GAAC6H,GAAP;CAAWzK,IAAAA,MAAM,CAAC,OAAD,CAAN,GAAgBkK,KAAK,GAAC,IAAIQ,SAAJ,CAAcD,GAAd,CAAtB;CAAyCzK,IAAAA,MAAM,CAAC,QAAD,CAAN,GAAiBoJ,MAAM,GAAC,IAAIuB,UAAJ,CAAeF,GAAf,CAAxB;CAA4CzK,IAAAA,MAAM,CAAC,QAAD,CAAN,GAAiB2J,MAAM,GAAC,IAAIiB,UAAJ,CAAeH,GAAf,CAAxB;CAA4CzK,IAAAA,MAAM,CAAC,QAAD,CAAN,GAAiBkI,MAAM,GAAC,IAAIrF,UAAJ,CAAe4H,GAAf,CAAxB;CAA4CzK,IAAAA,MAAM,CAAC,SAAD,CAAN,GAAkBkJ,OAAO,GAAC,IAAI2B,WAAJ,CAAgBJ,GAAhB,CAA1B;CAA+CzK,IAAAA,MAAM,CAAC,SAAD,CAAN,GAAkBqK,OAAO,GAAC,IAAIS,WAAJ,CAAgBL,GAAhB,CAA1B;CAA+CzK,IAAAA,MAAM,CAAC,SAAD,CAAN,GAAkBsK,OAAO,GAAC,IAAIS,YAAJ,CAAiBN,GAAjB,CAA1B;CAAgDzK,IAAAA,MAAM,CAAC,SAAD,CAAN,GAAkBuK,OAAO,GAAC,IAAIS,YAAJ,CAAiBP,GAAjB,CAA1B;CAAgD;;CAAA,MAAIQ,WAAW,GAAC,OAAhB;CAAwB,MAAGjL,MAAM,CAAC,aAAD,CAAT,EAAyB8C,MAAM,CAACmI,WAAW,KAAGjL,MAAM,CAAC,aAAD,CAArB,EAAqC,uDAArC,CAAN;CAAoG,MAAIkL,cAAc,GAAClL,MAAM,CAAC,gBAAD,CAAN,IAA0B,QAA7C;CAAsDuF,EAAAA,gBAAgB,CAAC,gBAAD,EAAkB,gBAAlB,CAAhB;CAAoDzC,EAAAA,MAAM,CAACoI,cAAc,IAAED,WAAjB,EAA6B,2DAAyDC,cAAzD,GAAwE,iBAAxE,GAA0FD,WAA1F,GAAsG,GAAnI,CAAN;CAA8InI,EAAAA,MAAM,CAAC,OAAO8H,UAAP,IAAmB,WAAnB,IAAgC,OAAOI,YAAP,KAAsB,WAAtD,IAAmEJ,UAAU,CAACO,SAAX,CAAqB5D,QAArB,IAA+B7E,SAAlG,IAA6GkI,UAAU,CAACO,SAAX,CAAqBC,GAArB,IAA0B1I,SAAxI,EAAkJ,qDAAlJ,CAAN;CAA+MI,EAAAA,MAAM,CAAC,CAAC9C,MAAM,CAAC,YAAD,CAAR,EAAuB,sFAAvB,CAAN;CAAqH8C,EAAAA,MAAM,CAACoI,cAAc,IAAE,QAAjB,EAA0B,kGAA1B,CAAN;CAAoI,MAAIG,SAAJ;;CAAc,WAASC,gBAAT,GAA2B;CAAC,QAAIC,GAAG,GAACC,yBAAyB,EAAjC;;CAAoC1I,IAAAA,MAAM,CAAC,CAACyI,GAAG,GAAC,CAAL,KAAS,CAAV,CAAN;CAAmB5B,IAAAA,MAAM,CAAC4B,GAAG,IAAE,CAAN,CAAN,GAAe,QAAf;CAAwB5B,IAAAA,MAAM,CAAC4B,GAAG,GAAC,CAAJ,IAAO,CAAR,CAAN,GAAiB,UAAjB;CAA4B5B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAU,UAAV;CAAqB;;CAAA,WAAS8B,gBAAT,GAA2B;CAAC,QAAG7E,KAAH,EAAS;;CAAO,QAAI2E,GAAG,GAACC,yBAAyB,EAAjC;;CAAoC,QAAIE,OAAO,GAACrB,OAAO,CAACkB,GAAG,IAAE,CAAN,CAAnB;CAA4B,QAAII,OAAO,GAACtB,OAAO,CAACkB,GAAG,GAAC,CAAJ,IAAO,CAAR,CAAnB;;CAA8B,QAAGG,OAAO,IAAE,QAAT,IAAmBC,OAAO,IAAE,UAA/B,EAA0C;CAAC1F,MAAAA,KAAK,CAAC,qHAAmH0F,OAAO,CAAC7D,QAAR,CAAiB,EAAjB,CAAnH,GAAwI,KAAxI,GAA8I4D,OAAO,CAAC5D,QAAR,CAAiB,EAAjB,CAA/I,CAAL;CAA0K;;CAAA,QAAG6B,MAAM,CAAC,CAAD,CAAN,KAAY,UAAf,EAA0B1D,KAAK,CAAC,mFAAD,CAAL;CAA2F;;CAAA,GAAC,YAAU;CAAC,QAAI2F,GAAG,GAAC,IAAIjB,UAAJ,CAAe,CAAf,CAAR;CAA0B,QAAIkB,EAAE,GAAC,IAAInB,SAAJ,CAAckB,GAAG,CAAChJ,MAAlB,CAAP;CAAiCgJ,IAAAA,GAAG,CAAC,CAAD,CAAH,GAAO,KAAP;CAAa,QAAGC,EAAE,CAAC,CAAD,CAAF,KAAQ,GAAR,IAAaA,EAAE,CAAC,CAAD,CAAF,KAAQ,EAAxB,EAA2B,MAAK,mGAAL;CAAyG,GAAxN;;CAA4N,MAAIC,YAAY,GAAC,EAAjB;CAAoB,MAAIC,UAAU,GAAC,EAAf;CAAkB,MAAIC,aAAa,GAAC,EAAlB;CAAqB,MAAIC,kBAAkB,GAAC,KAAvB;;CAA8E,WAASC,MAAT,GAAiB;CAAC,QAAGlM,MAAM,CAAC,QAAD,CAAT,EAAoB;CAAC,UAAG,OAAOA,MAAM,CAAC,QAAD,CAAb,IAAyB,UAA5B,EAAuCA,MAAM,CAAC,QAAD,CAAN,GAAiB,CAACA,MAAM,CAAC,QAAD,CAAP,CAAjB;;CAAoC,aAAMA,MAAM,CAAC,QAAD,CAAN,CAAiBoD,MAAvB,EAA8B;CAAC+I,QAAAA,WAAW,CAACnM,MAAM,CAAC,QAAD,CAAN,CAAiBoM,KAAjB,EAAD,CAAX;CAAsC;CAAC;;CAAAC,IAAAA,oBAAoB,CAACP,YAAD,CAApB;CAAmC;;CAAA,WAASQ,WAAT,GAAsB;CAACb,IAAAA,gBAAgB;CAAG3I,IAAAA,MAAM,CAAC,CAACmJ,kBAAF,CAAN;CAA4BA,IAAAA,kBAAkB,GAAC,IAAnB;CAAwB,QAAG,CAACjM,MAAM,CAAC,UAAD,CAAP,IAAqB,CAACuM,EAAE,CAACC,IAAH,CAAQC,WAAjC,EAA6CF,EAAE,CAACC,IAAH;CAAUD,IAAAA,EAAE,CAACG,iBAAH,GAAqB,KAArB;CAAsCL,IAAAA,oBAAoB,CAACN,UAAD,CAApB;CAAiC;;CAAA,WAASY,OAAT,GAAkB;CAAClB,IAAAA,gBAAgB;;CAAG,QAAGzL,MAAM,CAAC,SAAD,CAAT,EAAqB;CAAC,UAAG,OAAOA,MAAM,CAAC,SAAD,CAAb,IAA0B,UAA7B,EAAwCA,MAAM,CAAC,SAAD,CAAN,GAAkB,CAACA,MAAM,CAAC,SAAD,CAAP,CAAlB;;CAAsC,aAAMA,MAAM,CAAC,SAAD,CAAN,CAAkBoD,MAAxB,EAA+B;CAACwJ,QAAAA,YAAY,CAAC5M,MAAM,CAAC,SAAD,CAAN,CAAkBoM,KAAlB,EAAD,CAAZ;CAAwC;CAAC;;CAAAC,IAAAA,oBAAoB,CAACL,aAAD,CAApB;CAAoC;;CAAA,WAASG,WAAT,CAAqBU,EAArB,EAAwB;CAACf,IAAAA,YAAY,CAACgB,OAAb,CAAqBD,EAArB;CAAyB;;CAAA,WAASE,SAAT,CAAmBF,EAAnB,EAAsB;CAACd,IAAAA,UAAU,CAACe,OAAX,CAAmBD,EAAnB;CAAuB;;CAAA,WAASD,YAAT,CAAsBC,EAAtB,EAAyB;CAACb,IAAAA,aAAa,CAACc,OAAd,CAAsBD,EAAtB;CAA0B;;CAAA/J,EAAAA,MAAM,CAACkK,IAAI,CAACC,IAAN,EAAW,6HAAX,CAAN;CAAgJnK,EAAAA,MAAM,CAACkK,IAAI,CAACE,MAAN,EAAa,+HAAb,CAAN;CAAoJpK,EAAAA,MAAM,CAACkK,IAAI,CAACG,KAAN,EAAY,8HAAZ,CAAN;CAAkJrK,EAAAA,MAAM,CAACkK,IAAI,CAACI,KAAN,EAAY,8HAAZ,CAAN;CAAkJ,MAAIC,eAAe,GAAC,CAApB;CAAsB,MAAIC,oBAAoB,GAAC,IAAzB;CAA8B,MAAIC,qBAAqB,GAAC,IAA1B;CAA+B,MAAIC,qBAAqB,GAAC,EAA1B;;CAA6B,WAASC,sBAAT,CAAgCC,EAAhC,EAAmC;CAAC,QAAIC,IAAI,GAACD,EAAT;;CAAY,WAAM,CAAN,EAAQ;CAAC,UAAG,CAACF,qBAAqB,CAACE,EAAD,CAAzB,EAA8B,OAAOA,EAAP;CAAUA,MAAAA,EAAE,GAACC,IAAI,GAACX,IAAI,CAACY,MAAL,EAAR;CAAsB;CAAC;;CAAA,WAASC,gBAAT,CAA0BH,EAA1B,EAA6B;CAACL,IAAAA,eAAe;;CAAG,QAAGrN,MAAM,CAAC,wBAAD,CAAT,EAAoC;CAACA,MAAAA,MAAM,CAAC,wBAAD,CAAN,CAAiCqN,eAAjC;CAAkD;;CAAA,QAAGK,EAAH,EAAM;CAAC5K,MAAAA,MAAM,CAAC,CAAC0K,qBAAqB,CAACE,EAAD,CAAvB,CAAN;CAAmCF,MAAAA,qBAAqB,CAACE,EAAD,CAArB,GAA0B,CAA1B;;CAA4B,UAAGJ,oBAAoB,KAAG,IAAvB,IAA6B,OAAOQ,WAAP,IAAoB,WAApD,EAAgE;CAACR,QAAAA,oBAAoB,GAACQ,WAAW,CAAC,YAAU;CAAC,cAAGlH,KAAH,EAAS;CAACmH,YAAAA,aAAa,CAACT,oBAAD,CAAb;CAAoCA,YAAAA,oBAAoB,GAAC,IAArB;CAA0B;CAAO;;CAAA,cAAI5H,KAAK,GAAC,KAAV;;CAAgB,eAAI,IAAIsI,GAAR,IAAeR,qBAAf,EAAqC;CAAC,gBAAG,CAAC9H,KAAJ,EAAU;CAACA,cAAAA,KAAK,GAAC,IAAN;CAAWxC,cAAAA,GAAG,CAAC,oCAAD,CAAH;CAA0C;;CAAAA,YAAAA,GAAG,CAAC,iBAAe8K,GAAhB,CAAH;CAAwB;;CAAA,cAAGtI,KAAH,EAAS;CAACxC,YAAAA,GAAG,CAAC,eAAD,CAAH;CAAqB;CAAC,SAAzQ,EAA0Q,GAA1Q,CAAhC;CAA+S;CAAC,KAAvb,MAA2b;CAACA,MAAAA,GAAG,CAAC,0CAAD,CAAH;CAAgD;CAAC;;CAAA,WAAS+K,mBAAT,CAA6BP,EAA7B,EAAgC;CAACL,IAAAA,eAAe;;CAAG,QAAGrN,MAAM,CAAC,wBAAD,CAAT,EAAoC;CAACA,MAAAA,MAAM,CAAC,wBAAD,CAAN,CAAiCqN,eAAjC;CAAkD;;CAAA,QAAGK,EAAH,EAAM;CAAC5K,MAAAA,MAAM,CAAC0K,qBAAqB,CAACE,EAAD,CAAtB,CAAN;CAAkC,aAAOF,qBAAqB,CAACE,EAAD,CAA5B;CAAiC,KAA1E,MAA8E;CAACxK,MAAAA,GAAG,CAAC,4CAAD,CAAH;CAAkD;;CAAA,QAAGmK,eAAe,IAAE,CAApB,EAAsB;CAAC,UAAGC,oBAAoB,KAAG,IAA1B,EAA+B;CAACS,QAAAA,aAAa,CAACT,oBAAD,CAAb;CAAoCA,QAAAA,oBAAoB,GAAC,IAArB;CAA0B;;CAAA,UAAGC,qBAAH,EAAyB;CAAC,YAAIW,QAAQ,GAACX,qBAAb;CAAmCA,QAAAA,qBAAqB,GAAC,IAAtB;CAA2BW,QAAAA,QAAQ;CAAG;CAAC;CAAC;;CAAA,WAASjI,KAAT,CAAekI,IAAf,EAAoB;CAAC;CAAC,UAAGnO,MAAM,CAAC,SAAD,CAAT,EAAqB;CAACA,QAAAA,MAAM,CAAC,SAAD,CAAN,CAAkBmO,IAAlB;CAAwB;CAAC;CAAAA,IAAAA,IAAI,GAAC,aAAWA,IAAX,GAAgB,GAArB;CAAyBjL,IAAAA,GAAG,CAACiL,IAAD,CAAH;CAAUvH,IAAAA,KAAK,GAAC,IAAN;CAAwB,QAAIwH,CAAC,GAAC,IAAI1H,WAAW,CAAC2H,YAAhB,CAA6BF,IAA7B,CAAN;CAAyC,UAAMC,CAAN;CAAQ;;CAAA,MAAIE,aAAa,GAAC,uCAAlB;;CAA0D,WAASC,SAAT,CAAmBhM,QAAnB,EAA4B;CAAC,WAAOA,QAAQ,CAACiM,UAAT,CAAoBF,aAApB,CAAP;CAA0C;;CAAA,WAASG,SAAT,CAAmBlM,QAAnB,EAA4B;CAAC,WAAOA,QAAQ,CAACiM,UAAT,CAAoB,SAApB,CAAP;CAAsC;;CAAA,WAASE,mBAAT,CAA6BC,IAA7B,EAAkCC,QAAlC,EAA2C;CAAC,WAAO,YAAU;CAAC,UAAIC,WAAW,GAACF,IAAhB;CAAqB,UAAIG,GAAG,GAACF,QAAR;;CAAiB,UAAG,CAACA,QAAJ,EAAa;CAACE,QAAAA,GAAG,GAAC9O,MAAM,CAAC,KAAD,CAAV;CAAkB;;CAAA8C,MAAAA,MAAM,CAACmJ,kBAAD,EAAoB,sBAAoB4C,WAApB,GAAgC,wCAApD,CAAN;;CAAoG,UAAG,CAACC,GAAG,CAACH,IAAD,CAAP,EAAc;CAAC7L,QAAAA,MAAM,CAACgM,GAAG,CAACH,IAAD,CAAJ,EAAW,+BAA6BE,WAA7B,GAAyC,aAApD,CAAN;CAAyE;;CAAA,aAAOC,GAAG,CAACH,IAAD,CAAH,CAAUI,KAAV,CAAgB,IAAhB,EAAqBC,SAArB,CAAP;CAAuC,KAA3T;CAA4T;;CAAA,MAAIC,cAAJ;CAAmBA,EAAAA,cAAc,GAAC,cAAf;;CAA8B,MAAG,CAACV,SAAS,CAACU,cAAD,CAAb,EAA8B;CAACA,IAAAA,cAAc,GAACxN,UAAU,CAACwN,cAAD,CAAzB;CAA0C;;CAAA,WAASC,SAAT,CAAmBC,IAAnB,EAAwB;CAAC,QAAG;CAAC,UAAGA,IAAI,IAAEF,cAAN,IAAsBxI,UAAzB,EAAoC;CAAC,eAAO,IAAI5D,UAAJ,CAAe4D,UAAf,CAAP;CAAkC;;CAAA,UAAG5E,UAAH,EAAc;CAAC,eAAOA,UAAU,CAACsN,IAAD,CAAjB;CAAwB,OAAvC,MAA2C;CAAC,cAAK,iDAAL;CAAuD;CAAC,KAA/K,CAA+K,OAAMjM,GAAN,EAAU;CAAC+C,MAAAA,KAAK,CAAC/C,GAAD,CAAL;CAAW;CAAC;;CAAA,WAASkM,gBAAT,GAA2B;CAAC,QAAG,CAAC3I,UAAD,KAAc3F,kBAAkB,IAAEE,qBAAlC,CAAH,EAA4D;CAAC,UAAG,OAAOqO,KAAP,IAAc,UAAd,IAA0B,CAACZ,SAAS,CAACQ,cAAD,CAAvC,EAAwD;CAAC,eAAOI,KAAK,CAACJ,cAAD,EAAgB;CAACK,UAAAA,WAAW,EAAC;CAAb,SAAhB,CAAL,CAAkDC,IAAlD,CAAuD,UAASrK,QAAT,EAAkB;CAAC,cAAG,CAACA,QAAQ,CAAC,IAAD,CAAZ,EAAmB;CAAC,kBAAK,yCAAuC+J,cAAvC,GAAsD,GAA3D;CAA+D;;CAAA,iBAAO/J,QAAQ,CAAC,aAAD,CAAR,EAAP;CAAiC,SAA9L,EAAgMsK,KAAhM,CAAsM,YAAU;CAAC,iBAAON,SAAS,CAACD,cAAD,CAAhB;CAAiC,SAAlP,CAAP;CAA2P,OAApT,MAAwT;CAAC,YAAGrN,SAAH,EAAa;CAAC,iBAAO,IAAI6N,OAAJ,CAAY,UAASC,OAAT,EAAiBC,MAAjB,EAAwB;CAAC/N,YAAAA,SAAS,CAACqN,cAAD,EAAgB,UAAS/J,QAAT,EAAkB;CAACwK,cAAAA,OAAO,CAAC,IAAI7M,UAAJ,CAAeqC,QAAf,CAAD,CAAP;CAAkC,aAArE,EAAsEyK,MAAtE,CAAT;CAAuF,WAA5H,CAAP;CAAqI;CAAC;CAAC;;CAAA,WAAOF,OAAO,CAACC,OAAR,GAAkBH,IAAlB,CAAuB,YAAU;CAAC,aAAOL,SAAS,CAACD,cAAD,CAAhB;CAAiC,KAAnE,CAAP;CAA4E;;CAAA,WAASW,UAAT,GAAqB;CAAC,QAAIC,IAAI,GAAC;CAAC,aAAMC,aAAP;CAAqB,gCAAyBA;CAA9C,KAAT;;CAAsE,aAASC,eAAT,CAAyBC,QAAzB,EAAkCxM,MAAlC,EAAyC;CAAC,UAAIyM,OAAO,GAACD,QAAQ,CAACC,OAArB;CAA6BjQ,MAAAA,MAAM,CAAC,KAAD,CAAN,GAAciQ,OAAd;CAAsBtJ,MAAAA,UAAU,GAAC3G,MAAM,CAAC,KAAD,CAAN,CAAc,QAAd,CAAX;CAAmC8C,MAAAA,MAAM,CAAC6D,UAAD,EAAY,kCAAZ,CAAN;CAAsD6D,MAAAA,0BAA0B,CAAC7D,UAAU,CAAC/D,MAAZ,CAA1B;CAA8CyI,MAAAA,SAAS,GAACrL,MAAM,CAAC,KAAD,CAAN,CAAc,2BAAd,CAAV;CAAqD8C,MAAAA,MAAM,CAACuI,SAAD,EAAW,iCAAX,CAAN;CAAoD0B,MAAAA,SAAS,CAAC/M,MAAM,CAAC,KAAD,CAAN,CAAc,mBAAd,CAAD,CAAT;CAA8CiO,MAAAA,mBAAmB,CAAC,kBAAD,CAAnB;CAAwC;;CAAAJ,IAAAA,gBAAgB,CAAC,kBAAD,CAAhB;CAAqC,QAAIqC,UAAU,GAAClQ,MAAf;;CAAsB,aAASmQ,0BAAT,CAAoCC,MAApC,EAA2C;CAACtN,MAAAA,MAAM,CAAC9C,MAAM,KAAGkQ,UAAV,EAAqB,kHAArB,CAAN;CAA+IA,MAAAA,UAAU,GAAC,IAAX;CAAgBH,MAAAA,eAAe,CAACK,MAAM,CAAC,UAAD,CAAP,CAAf;CAAoC;;CAAA,aAASC,sBAAT,CAAgCC,QAAhC,EAAyC;CAAC,aAAOlB,gBAAgB,GAAGG,IAAnB,CAAwB,UAAS/M,MAAT,EAAgB;CAAC,eAAOkE,WAAW,CAAC6J,WAAZ,CAAwB/N,MAAxB,EAA+BqN,IAA/B,CAAP;CAA4C,OAArF,EAAuFN,IAAvF,CAA4F,UAASS,QAAT,EAAkB;CAAC,eAAOA,QAAP;CAAgB,OAA/H,EAAiIT,IAAjI,CAAsIe,QAAtI,EAA+I,UAAS3M,MAAT,EAAgB;CAACT,QAAAA,GAAG,CAAC,4CAA0CS,MAA3C,CAAH;;CAAsD,YAAG8K,SAAS,CAACQ,cAAD,CAAZ,EAA6B;CAAC/L,UAAAA,GAAG,CAAC,uCAAqC+L,cAArC,GAAoD,gMAArD,CAAH;CAA0P;;CAAAhJ,QAAAA,KAAK,CAACtC,MAAD,CAAL;CAAc,OAA5f,CAAP;CAAqgB;;CAAA,aAAS6M,gBAAT,GAA2B;CAAC,UAAG,CAAC/J,UAAD,IAAa,OAAOC,WAAW,CAAC+J,oBAAnB,IAAyC,UAAtD,IAAkE,CAAClC,SAAS,CAACU,cAAD,CAA5E,IAA8F,CAACR,SAAS,CAACQ,cAAD,CAAxG,IAA0H,OAAOI,KAAP,IAAc,UAA3I,EAAsJ;CAAC,eAAOA,KAAK,CAACJ,cAAD,EAAgB;CAACK,UAAAA,WAAW,EAAC;CAAb,SAAhB,CAAL,CAAkDC,IAAlD,CAAuD,UAASrK,QAAT,EAAkB;CAAC,cAAIkL,MAAM,GAAC1J,WAAW,CAAC+J,oBAAZ,CAAiCvL,QAAjC,EAA0C2K,IAA1C,CAAX;CAA2D,iBAAOO,MAAM,CAACb,IAAP,CAAYY,0BAAZ,EAAuC,UAASxM,MAAT,EAAgB;CAACT,YAAAA,GAAG,CAAC,oCAAkCS,MAAnC,CAAH;CAA8CT,YAAAA,GAAG,CAAC,2CAAD,CAAH;CAAiD,mBAAOmN,sBAAsB,CAACF,0BAAD,CAA7B;CAA0D,WAAjN,CAAP;CAA0N,SAA/V,CAAP;CAAwW,OAA/f,MAAmgB;CAAC,eAAOE,sBAAsB,CAACF,0BAAD,CAA7B;CAA0D;CAAC;;CAAA,QAAGnQ,MAAM,CAAC,iBAAD,CAAT,EAA6B;CAAC,UAAG;CAAC,YAAIiQ,OAAO,GAACjQ,MAAM,CAAC,iBAAD,CAAN,CAA0B6P,IAA1B,EAA+BE,eAA/B,CAAZ;CAA4D,eAAOE,OAAP;CAAe,OAA/E,CAA+E,OAAM7B,CAAN,EAAQ;CAAClL,QAAAA,GAAG,CAAC,wDAAsDkL,CAAvD,CAAH;CAA6D,eAAO,KAAP;CAAa;CAAC;;CAAAoC,IAAAA,gBAAgB;CAAG,WAAM,EAAN;CAAS;;CAAA,MAAIE,UAAJ;CAAe,MAAIC,OAAJ;;CAAY,WAAStE,oBAAT,CAA8BuE,SAA9B,EAAwC;CAAC,WAAMA,SAAS,CAACxN,MAAV,GAAiB,CAAvB,EAAyB;CAAC,UAAI8K,QAAQ,GAAC0C,SAAS,CAACxE,KAAV,EAAb;;CAA+B,UAAG,OAAO8B,QAAP,IAAiB,UAApB,EAA+B;CAACA,QAAAA,QAAQ,CAAClO,MAAD,CAAR;CAAiB;CAAS;;CAAA,UAAI6Q,IAAI,GAAC3C,QAAQ,CAAC2C,IAAlB;;CAAuB,UAAG,OAAOA,IAAP,IAAa,QAAhB,EAAyB;CAAC,YAAG3C,QAAQ,CAAC4C,GAAT,KAAepO,SAAlB,EAA4B;CAACqO,UAAAA,iBAAiB,CAACF,IAAD,CAAjB;CAA0B,SAAvD,MAA2D;CAACE,UAAAA,iBAAiB,CAACF,IAAD,CAAjB,CAAwB3C,QAAQ,CAAC4C,GAAjC;CAAsC;CAAC,OAA7H,MAAiI;CAACD,QAAAA,IAAI,CAAC3C,QAAQ,CAAC4C,GAAT,KAAepO,SAAf,GAAyB,IAAzB,GAA8BwL,QAAQ,CAAC4C,GAAxC,CAAJ;CAAiD;CAAC;CAAC;;CAAA,WAASE,QAAT,CAAkBH,IAAlB,EAAuB;CAACpL,IAAAA,QAAQ,CAAC,wEAAD,CAAR;CAAmF,WAAOoL,IAAP;CAAY;;CAAA,WAASI,WAAT,CAAqB/Q,IAArB,EAA0B;CAAC,QAAIgR,KAAK,GAAC,eAAV;CAA0B,WAAOhR,IAAI,CAACmD,OAAL,CAAa6N,KAAb,EAAmB,UAASC,CAAT,EAAW;CAAC,UAAIC,CAAC,GAACJ,QAAQ,CAACG,CAAD,CAAd;CAAkB,aAAOA,CAAC,KAAGC,CAAJ,GAAMD,CAAN,GAAQC,CAAC,GAAC,IAAF,GAAOD,CAAP,GAAS,GAAxB;CAA4B,KAA7E,CAAP;CAAsF;;CAAA,WAASJ,iBAAT,CAA2BM,OAA3B,EAAmC;CAAC,WAAOhG,SAAS,CAACrF,GAAV,CAAcqL,OAAd,CAAP;CAA8B;;CAAA,WAASC,YAAT,GAAuB;CAAC,QAAIrN,KAAK,GAAC,IAAI1C,KAAJ,EAAV;;CAAoB,QAAG,CAAC0C,KAAK,CAACsN,KAAV,EAAgB;CAAC,UAAG;CAAC,cAAM,IAAIhQ,KAAJ,EAAN;CAAgB,OAApB,CAAoB,OAAM6M,CAAN,EAAQ;CAACnK,QAAAA,KAAK,GAACmK,CAAN;CAAQ;;CAAA,UAAG,CAACnK,KAAK,CAACsN,KAAV,EAAgB;CAAC,eAAM,4BAAN;CAAmC;CAAC;;CAAA,WAAOtN,KAAK,CAACsN,KAAN,CAAYzJ,QAAZ,EAAP;CAA8B;;CAA6D,WAAS0J,QAAT,CAAkBC,KAAlB,EAAwB;CAAC9H,IAAAA,MAAM,CAAC+H,iBAAiB,MAAI,CAAtB,CAAN,GAA+BD,KAA/B;CAAqC,WAAOA,KAAP;CAAa;;CAAA,MAAIE,IAAI,GAAC;CAACC,IAAAA,KAAK,EAAClQ,IAAI,IAAEA,IAAI,CAACmQ,MAAL,CAAY,CAAZ,MAAiB,GAA9B;CAAkCC,IAAAA,SAAS,EAACvP,QAAQ,IAAE;CAAC,UAAIwP,WAAW,GAAC,+DAAhB;CAAgF,aAAOA,WAAW,CAACC,IAAZ,CAAiBzP,QAAjB,EAA2BgB,KAA3B,CAAiC,CAAjC,CAAP;CAA2C,KAAlL;CAAmL0O,IAAAA,cAAc,EAAC,CAACC,KAAD,EAAOC,cAAP,KAAwB;CAAC,UAAIC,EAAE,GAAC,CAAP;;CAAS,WAAI,IAAI5J,CAAC,GAAC0J,KAAK,CAAC9O,MAAN,GAAa,CAAvB,EAAyBoF,CAAC,IAAE,CAA5B,EAA8BA,CAAC,EAA/B,EAAkC;CAAC,YAAI6J,IAAI,GAACH,KAAK,CAAC1J,CAAD,CAAd;;CAAkB,YAAG6J,IAAI,KAAG,GAAV,EAAc;CAACH,UAAAA,KAAK,CAACI,MAAN,CAAa9J,CAAb,EAAe,CAAf;CAAkB,SAAjC,MAAsC,IAAG6J,IAAI,KAAG,IAAV,EAAe;CAACH,UAAAA,KAAK,CAACI,MAAN,CAAa9J,CAAb,EAAe,CAAf;CAAkB4J,UAAAA,EAAE;CAAG,SAAvC,MAA4C,IAAGA,EAAH,EAAM;CAACF,UAAAA,KAAK,CAACI,MAAN,CAAa9J,CAAb,EAAe,CAAf;CAAkB4J,UAAAA,EAAE;CAAG;CAAC;;CAAA,UAAGD,cAAH,EAAkB;CAAC,eAAKC,EAAL,EAAQA,EAAE,EAAV,EAAa;CAACF,UAAAA,KAAK,CAACpF,OAAN,CAAc,IAAd;CAAoB;CAAC;;CAAA,aAAOoF,KAAP;CAAa,KAA7c;CAA8cK,IAAAA,SAAS,EAAC7Q,IAAI,IAAE;CAAC,UAAI8Q,UAAU,GAACb,IAAI,CAACC,KAAL,CAAWlQ,IAAX,CAAf;CAAA,UAAgC+Q,aAAa,GAAC/Q,IAAI,CAAC+C,MAAL,CAAY,CAAC,CAAb,MAAkB,GAAhE;CAAoE/C,MAAAA,IAAI,GAACiQ,IAAI,CAACM,cAAL,CAAoBvQ,IAAI,CAACgR,KAAL,CAAW,GAAX,EAAgBC,MAAhB,CAAuBC,CAAC,IAAE,CAAC,CAACA,CAA5B,CAApB,EAAmD,CAACJ,UAApD,EAAgEK,IAAhE,CAAqE,GAArE,CAAL;;CAA+E,UAAG,CAACnR,IAAD,IAAO,CAAC8Q,UAAX,EAAsB;CAAC9Q,QAAAA,IAAI,GAAC,GAAL;CAAS;;CAAA,UAAGA,IAAI,IAAE+Q,aAAT,EAAuB;CAAC/Q,QAAAA,IAAI,IAAE,GAAN;CAAU;;CAAA,aAAM,CAAC8Q,UAAU,GAAC,GAAD,GAAK,EAAhB,IAAoB9Q,IAA1B;CAA+B,KAAntB;CAAotBS,IAAAA,OAAO,EAACT,IAAI,IAAE;CAAC,UAAI0O,MAAM,GAACuB,IAAI,CAACG,SAAL,CAAepQ,IAAf,CAAX;CAAA,UAAgCoR,IAAI,GAAC1C,MAAM,CAAC,CAAD,CAA3C;CAAA,UAA+C2C,GAAG,GAAC3C,MAAM,CAAC,CAAD,CAAzD;;CAA6D,UAAG,CAAC0C,IAAD,IAAO,CAACC,GAAX,EAAe;CAAC,eAAM,GAAN;CAAU;;CAAA,UAAGA,GAAH,EAAO;CAACA,QAAAA,GAAG,GAACA,GAAG,CAACtO,MAAJ,CAAW,CAAX,EAAasO,GAAG,CAAC3P,MAAJ,GAAW,CAAxB,CAAJ;CAA+B;;CAAA,aAAO0P,IAAI,GAACC,GAAZ;CAAgB,KAAj3B;CAAk3BC,IAAAA,QAAQ,EAACtR,IAAI,IAAE;CAAC,UAAGA,IAAI,KAAG,GAAV,EAAc,OAAM,GAAN;CAAUA,MAAAA,IAAI,GAACiQ,IAAI,CAACY,SAAL,CAAe7Q,IAAf,CAAL;CAA0BA,MAAAA,IAAI,GAACA,IAAI,CAAC2B,OAAL,CAAa,KAAb,EAAmB,EAAnB,CAAL;CAA4B,UAAI4P,SAAS,GAACvR,IAAI,CAACgD,WAAL,CAAiB,GAAjB,CAAd;CAAoC,UAAGuO,SAAS,KAAG,CAAC,CAAhB,EAAkB,OAAOvR,IAAP;CAAY,aAAOA,IAAI,CAAC+C,MAAL,CAAYwO,SAAS,GAAC,CAAtB,CAAP;CAAgC,KAAljC;CAAmjCJ,IAAAA,IAAI,EAAC,YAAU;CAAC,UAAIK,KAAK,GAACC,KAAK,CAAChI,SAAN,CAAgB5H,KAAhB,CAAsB6P,IAAtB,CAA2BpE,SAA3B,EAAqC,CAArC,CAAV;CAAkD,aAAO2C,IAAI,CAACY,SAAL,CAAeW,KAAK,CAACL,IAAN,CAAW,GAAX,CAAf,CAAP;CAAuC,KAA5pC;CAA6pCQ,IAAAA,KAAK,EAAC,CAACC,CAAD,EAAGC,CAAH,KAAO;CAAC,aAAO5B,IAAI,CAACY,SAAL,CAAee,CAAC,GAAC,GAAF,GAAMC,CAArB,CAAP;CAA+B;CAA1sC,GAAT;;CAAqtC,WAASC,eAAT,GAA0B;CAAC,QAAG,OAAOC,MAAP,IAAe,QAAf,IAAyB,OAAOA,MAAM,CAAC,iBAAD,CAAb,IAAkC,UAA9D,EAAyE;CAAC,UAAIC,YAAY,GAAC,IAAI7Q,UAAJ,CAAe,CAAf,CAAjB;CAAmC,aAAO,YAAU;CAAC4Q,QAAAA,MAAM,CAACE,eAAP,CAAuBD,YAAvB;CAAqC,eAAOA,YAAY,CAAC,CAAD,CAAnB;CAAuB,OAA9E;CAA+E,KAA5L,MAAiM,IAAGxS,mBAAH,EAAuB;CAAC,UAAG;CAAC,YAAI0S,aAAa,GAACC,0BAAlB;CAAoC,eAAO,YAAU;CAAC,iBAAOD,aAAa,CAAC,aAAD,CAAb,CAA6B,CAA7B,EAAgC,CAAhC,CAAP;CAA0C,SAA5D;CAA6D,OAArG,CAAqG,OAAMxF,CAAN,EAAQ;CAAG;;CAAA,WAAO,YAAU;CAACnI,MAAAA,KAAK,CAAC,gSAAD,CAAL;CAAwS,KAA1T;CAA2T;;CAAA,MAAI6N,OAAO,GAAC;CAACpE,IAAAA,OAAO,EAAC,YAAU;CAAC,UAAIqE,YAAY,GAAC,EAAjB;CAAA,UAAoBC,gBAAgB,GAAC,KAArC;;CAA2C,WAAI,IAAIxL,CAAC,GAACwG,SAAS,CAAC5L,MAAV,GAAiB,CAA3B,EAA6BoF,CAAC,IAAE,CAAC,CAAJ,IAAO,CAACwL,gBAArC,EAAsDxL,CAAC,EAAvD,EAA0D;CAAC,YAAI9G,IAAI,GAAC8G,CAAC,IAAE,CAAH,GAAKwG,SAAS,CAACxG,CAAD,CAAd,GAAkB+D,EAAE,CAAC0H,GAAH,EAA3B;;CAAoC,YAAG,OAAOvS,IAAP,IAAa,QAAhB,EAAyB;CAAC,gBAAM,IAAIwS,SAAJ,CAAc,2CAAd,CAAN;CAAiE,SAA3F,MAAgG,IAAG,CAACxS,IAAJ,EAAS;CAAC,iBAAM,EAAN;CAAS;;CAAAqS,QAAAA,YAAY,GAACrS,IAAI,GAAC,GAAL,GAASqS,YAAtB;CAAmCC,QAAAA,gBAAgB,GAACrC,IAAI,CAACC,KAAL,CAAWlQ,IAAX,CAAjB;CAAkC;;CAAAqS,MAAAA,YAAY,GAACpC,IAAI,CAACM,cAAL,CAAoB8B,YAAY,CAACrB,KAAb,CAAmB,GAAnB,EAAwBC,MAAxB,CAA+BC,CAAC,IAAE,CAAC,CAACA,CAApC,CAApB,EAA2D,CAACoB,gBAA5D,EAA8EnB,IAA9E,CAAmF,GAAnF,CAAb;CAAqG,aAAM,CAACmB,gBAAgB,GAAC,GAAD,GAAK,EAAtB,IAA0BD,YAA1B,IAAwC,GAA9C;CAAkD,KAA7e;CAA8eI,IAAAA,QAAQ,EAAC,CAACC,IAAD,EAAMC,EAAN,KAAW;CAACD,MAAAA,IAAI,GAACN,OAAO,CAACpE,OAAR,CAAgB0E,IAAhB,EAAsB3P,MAAtB,CAA6B,CAA7B,CAAL;CAAqC4P,MAAAA,EAAE,GAACP,OAAO,CAACpE,OAAR,CAAgB2E,EAAhB,EAAoB5P,MAApB,CAA2B,CAA3B,CAAH;;CAAiC,eAAS6P,IAAT,CAAcC,GAAd,EAAkB;CAAC,YAAIC,KAAK,GAAC,CAAV;;CAAY,eAAKA,KAAK,GAACD,GAAG,CAACnR,MAAf,EAAsBoR,KAAK,EAA3B,EAA8B;CAAC,cAAGD,GAAG,CAACC,KAAD,CAAH,KAAa,EAAhB,EAAmB;CAAM;;CAAA,YAAIC,GAAG,GAACF,GAAG,CAACnR,MAAJ,GAAW,CAAnB;;CAAqB,eAAKqR,GAAG,IAAE,CAAV,EAAYA,GAAG,EAAf,EAAkB;CAAC,cAAGF,GAAG,CAACE,GAAD,CAAH,KAAW,EAAd,EAAiB;CAAM;;CAAA,YAAGD,KAAK,GAACC,GAAT,EAAa,OAAM,EAAN;CAAS,eAAOF,GAAG,CAAChR,KAAJ,CAAUiR,KAAV,EAAgBC,GAAG,GAACD,KAAJ,GAAU,CAA1B,CAAP;CAAoC;;CAAA,UAAIE,SAAS,GAACJ,IAAI,CAACF,IAAI,CAAC1B,KAAL,CAAW,GAAX,CAAD,CAAlB;CAAoC,UAAIiC,OAAO,GAACL,IAAI,CAACD,EAAE,CAAC3B,KAAH,CAAS,GAAT,CAAD,CAAhB;CAAgC,UAAItP,MAAM,GAAC4J,IAAI,CAAC4H,GAAL,CAASF,SAAS,CAACtR,MAAnB,EAA0BuR,OAAO,CAACvR,MAAlC,CAAX;CAAqD,UAAIyR,eAAe,GAACzR,MAApB;;CAA2B,WAAI,IAAIoF,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqBoF,CAAC,EAAtB,EAAyB;CAAC,YAAGkM,SAAS,CAAClM,CAAD,CAAT,KAAemM,OAAO,CAACnM,CAAD,CAAzB,EAA6B;CAACqM,UAAAA,eAAe,GAACrM,CAAhB;CAAkB;CAAM;CAAC;;CAAA,UAAIsM,WAAW,GAAC,EAAhB;;CAAmB,WAAI,IAAItM,CAAC,GAACqM,eAAV,EAA0BrM,CAAC,GAACkM,SAAS,CAACtR,MAAtC,EAA6CoF,CAAC,EAA9C,EAAiD;CAACsM,QAAAA,WAAW,CAACC,IAAZ,CAAiB,IAAjB;CAAuB;;CAAAD,MAAAA,WAAW,GAACA,WAAW,CAACE,MAAZ,CAAmBL,OAAO,CAACpR,KAAR,CAAcsR,eAAd,CAAnB,CAAZ;CAA+D,aAAOC,WAAW,CAACjC,IAAZ,CAAiB,GAAjB,CAAP;CAA6B;CAAtrC,GAAZ;CAAosC,MAAIoC,GAAG,GAAC;CAACC,IAAAA,IAAI,EAAC,EAAN;CAAS1I,IAAAA,IAAI,EAAC,YAAU,EAAxB;CAA2B2I,IAAAA,QAAQ,EAAC,YAAU,EAA9C;CAAiDC,IAAAA,QAAQ,EAAC,UAASC,GAAT,EAAaC,GAAb,EAAiB;CAACL,MAAAA,GAAG,CAACC,IAAJ,CAASG,GAAT,IAAc;CAACE,QAAAA,KAAK,EAAC,EAAP;CAAUC,QAAAA,MAAM,EAAC,EAAjB;CAAoBF,QAAAA,GAAG,EAACA;CAAxB,OAAd;CAA2C/I,MAAAA,EAAE,CAACkJ,cAAH,CAAkBJ,GAAlB,EAAsBJ,GAAG,CAACS,UAA1B;CAAsC,KAA7J;CAA8JA,IAAAA,UAAU,EAAC;CAAC5Q,MAAAA,IAAI,EAAC,UAAS6Q,MAAT,EAAgB;CAAC,YAAIC,GAAG,GAACX,GAAG,CAACC,IAAJ,CAASS,MAAM,CAACtU,IAAP,CAAYwU,IAArB,CAAR;;CAAmC,YAAG,CAACD,GAAJ,EAAQ;CAAC,gBAAM,IAAIrJ,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAH,QAAAA,MAAM,CAACC,GAAP,GAAWA,GAAX;CAAeD,QAAAA,MAAM,CAACI,QAAP,GAAgB,KAAhB;CAAsB,OAApI;CAAqIC,MAAAA,KAAK,EAAC,UAASL,MAAT,EAAgB;CAACA,QAAAA,MAAM,CAACC,GAAP,CAAWN,GAAX,CAAeW,KAAf,CAAqBN,MAAM,CAACC,GAA5B;CAAiC,OAA7L;CAA8LK,MAAAA,KAAK,EAAC,UAASN,MAAT,EAAgB;CAACA,QAAAA,MAAM,CAACC,GAAP,CAAWN,GAAX,CAAeW,KAAf,CAAqBN,MAAM,CAACC,GAA5B;CAAiC,OAAtP;CAAuPhS,MAAAA,IAAI,EAAC,UAAS+R,MAAT,EAAgB/S,MAAhB,EAAuBsT,MAAvB,EAA8B9S,MAA9B,EAAqC+S,GAArC,EAAyC;CAAC,YAAG,CAACR,MAAM,CAACC,GAAR,IAAa,CAACD,MAAM,CAACC,GAAP,CAAWN,GAAX,CAAec,QAAhC,EAAyC;CAAC,gBAAM,IAAI7J,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAIO,SAAS,GAAC,CAAd;;CAAgB,aAAI,IAAI7N,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqBoF,CAAC,EAAtB,EAAyB;CAAC,cAAI4H,MAAJ;;CAAW,cAAG;CAACA,YAAAA,MAAM,GAACuF,MAAM,CAACC,GAAP,CAAWN,GAAX,CAAec,QAAf,CAAwBT,MAAM,CAACC,GAA/B,CAAP;CAA2C,WAA/C,CAA+C,OAAMxH,CAAN,EAAQ;CAAC,kBAAM,IAAI7B,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,cAAG1F,MAAM,KAAG1N,SAAT,IAAoB2T,SAAS,KAAG,CAAnC,EAAqC;CAAC,kBAAM,IAAI9J,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,cAAG1F,MAAM,KAAG,IAAT,IAAeA,MAAM,KAAG1N,SAA3B,EAAqC;CAAM2T,UAAAA,SAAS;CAAGzT,UAAAA,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAN,GAAiB4H,MAAjB;CAAwB;;CAAA,YAAGiG,SAAH,EAAa;CAACV,UAAAA,MAAM,CAACtU,IAAP,CAAYiV,SAAZ,GAAsBC,IAAI,CAACC,GAAL,EAAtB;CAAiC;;CAAA,eAAOH,SAAP;CAAiB,OAArsB;CAAssBI,MAAAA,KAAK,EAAC,UAASd,MAAT,EAAgB/S,MAAhB,EAAuBsT,MAAvB,EAA8B9S,MAA9B,EAAqC+S,GAArC,EAAyC;CAAC,YAAG,CAACR,MAAM,CAACC,GAAR,IAAa,CAACD,MAAM,CAACC,GAAP,CAAWN,GAAX,CAAeoB,QAAhC,EAAyC;CAAC,gBAAM,IAAInK,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAG;CAAC,eAAI,IAAItN,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqBoF,CAAC,EAAtB,EAAyB;CAACmN,YAAAA,MAAM,CAACC,GAAP,CAAWN,GAAX,CAAeoB,QAAf,CAAwBf,MAAM,CAACC,GAA/B,EAAmChT,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAzC;CAAqD;CAAC,SAApF,CAAoF,OAAM4F,CAAN,EAAQ;CAAC,gBAAM,IAAI7B,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAG1S,MAAH,EAAU;CAACuS,UAAAA,MAAM,CAACtU,IAAP,CAAYiV,SAAZ,GAAsBC,IAAI,CAACC,GAAL,EAAtB;CAAiC;;CAAA,eAAOhO,CAAP;CAAS;CAA1+B,KAAzK;CAAqpCmO,IAAAA,eAAe,EAAC;CAACP,MAAAA,QAAQ,EAAC,UAASR,GAAT,EAAa;CAAC,YAAG,CAACA,GAAG,CAACL,KAAJ,CAAUnS,MAAd,EAAqB;CAAC,cAAIgN,MAAM,GAAC,IAAX;;CAAgB,cAAGlP,mBAAH,EAAuB;CAAC,gBAAI0V,OAAO,GAAC,GAAZ;CAAgB,gBAAInM,GAAG,GAACoM,MAAM,CAACC,KAAP,CAAaF,OAAb,CAAR;CAA8B,gBAAIP,SAAS,GAAC,CAAd;;CAAgB,gBAAG;CAACA,cAAAA,SAAS,GAACvU,EAAE,CAACiV,QAAH,CAAY5V,OAAO,CAAC6V,KAAR,CAAcC,EAA1B,EAA6BxM,GAA7B,EAAiC,CAAjC,EAAmCmM,OAAnC,EAA2C,CAAC,CAA5C,CAAV;CAAyD,aAA7D,CAA6D,OAAMxI,CAAN,EAAQ;CAAC,kBAAGA,CAAC,CAACtG,QAAF,GAAaoP,QAAb,CAAsB,KAAtB,CAAH,EAAgCb,SAAS,GAAC,CAAV,CAAhC,KAAiD,MAAMjI,CAAN;CAAQ;;CAAA,gBAAGiI,SAAS,GAAC,CAAb,EAAe;CAACjG,cAAAA,MAAM,GAAC3F,GAAG,CAAClH,KAAJ,CAAU,CAAV,EAAY8S,SAAZ,EAAuBvO,QAAvB,CAAgC,OAAhC,CAAP;CAAgD,aAAhE,MAAoE;CAACsI,cAAAA,MAAM,GAAC,IAAP;CAAY;CAAC,WAAvS,MAA4S,IAAG,OAAOrP,MAAP,IAAe,WAAf,IAA4B,OAAOA,MAAM,CAACoW,MAAd,IAAsB,UAArD,EAAgE;CAAC/G,YAAAA,MAAM,GAACrP,MAAM,CAACoW,MAAP,CAAc,SAAd,CAAP;;CAAgC,gBAAG/G,MAAM,KAAG,IAAZ,EAAiB;CAACA,cAAAA,MAAM,IAAE,IAAR;CAAa;CAAC,WAAjI,MAAsI,IAAG,OAAOgH,QAAP,IAAiB,UAApB,EAA+B;CAAChH,YAAAA,MAAM,GAACgH,QAAQ,EAAf;;CAAkB,gBAAGhH,MAAM,KAAG,IAAZ,EAAiB;CAACA,cAAAA,MAAM,IAAE,IAAR;CAAa;CAAC;;CAAA,cAAG,CAACA,MAAJ,EAAW;CAAC,mBAAO,IAAP;CAAY;;CAAAwF,UAAAA,GAAG,CAACL,KAAJ,GAAU8B,kBAAkB,CAACjH,MAAD,EAAQ,IAAR,CAA5B;CAA0C;;CAAA,eAAOwF,GAAG,CAACL,KAAJ,CAAUnJ,KAAV,EAAP;CAAyB,OAA7pB;CAA8pBsK,MAAAA,QAAQ,EAAC,UAASd,GAAT,EAAa0B,GAAb,EAAiB;CAAC,YAAGA,GAAG,KAAG,IAAN,IAAYA,GAAG,KAAG,EAArB,EAAwB;CAAClS,UAAAA,GAAG,CAAC4B,iBAAiB,CAAC4O,GAAG,CAACJ,MAAL,EAAY,CAAZ,CAAlB,CAAH;CAAqCI,UAAAA,GAAG,CAACJ,MAAJ,GAAW,EAAX;CAAc,SAA5E,MAAgF;CAAC,cAAG8B,GAAG,IAAE,CAAR,EAAU1B,GAAG,CAACJ,MAAJ,CAAWT,IAAX,CAAgBuC,GAAhB;CAAqB;CAAC,OAA1yB;CAA2yBrB,MAAAA,KAAK,EAAC,UAASL,GAAT,EAAa;CAAC,YAAGA,GAAG,CAACJ,MAAJ,IAAYI,GAAG,CAACJ,MAAJ,CAAWpS,MAAX,GAAkB,CAAjC,EAAmC;CAACgC,UAAAA,GAAG,CAAC4B,iBAAiB,CAAC4O,GAAG,CAACJ,MAAL,EAAY,CAAZ,CAAlB,CAAH;CAAqCI,UAAAA,GAAG,CAACJ,MAAJ,GAAW,EAAX;CAAc;CAAC;CAAv5B,KAArqC;CAA8jE+B,IAAAA,gBAAgB,EAAC;CAACb,MAAAA,QAAQ,EAAC,UAASd,GAAT,EAAa0B,GAAb,EAAiB;CAAC,YAAGA,GAAG,KAAG,IAAN,IAAYA,GAAG,KAAG,EAArB,EAAwB;CAACpU,UAAAA,GAAG,CAAC8D,iBAAiB,CAAC4O,GAAG,CAACJ,MAAL,EAAY,CAAZ,CAAlB,CAAH;CAAqCI,UAAAA,GAAG,CAACJ,MAAJ,GAAW,EAAX;CAAc,SAA5E,MAAgF;CAAC,cAAG8B,GAAG,IAAE,CAAR,EAAU1B,GAAG,CAACJ,MAAJ,CAAWT,IAAX,CAAgBuC,GAAhB;CAAqB;CAAC,OAA7I;CAA8IrB,MAAAA,KAAK,EAAC,UAASL,GAAT,EAAa;CAAC,YAAGA,GAAG,CAACJ,MAAJ,IAAYI,GAAG,CAACJ,MAAJ,CAAWpS,MAAX,GAAkB,CAAjC,EAAmC;CAACF,UAAAA,GAAG,CAAC8D,iBAAiB,CAAC4O,GAAG,CAACJ,MAAL,EAAY,CAAZ,CAAlB,CAAH;CAAqCI,UAAAA,GAAG,CAACJ,MAAJ,GAAW,EAAX;CAAc;CAAC;CAA1P;CAA/kE,GAAR;;CAAo1E,WAASgC,UAAT,CAAoBC,OAApB,EAA4BzN,IAA5B,EAAiC;CAAC9B,IAAAA,MAAM,CAACwP,IAAP,CAAY,CAAZ,EAAcD,OAAd,EAAsBA,OAAO,GAACzN,IAA9B;CAAoC;;CAAA,WAAS2N,WAAT,CAAqB3N,IAArB,EAA0B4N,SAA1B,EAAoC;CAAC9U,IAAAA,MAAM,CAAC8U,SAAD,EAAW,gCAAX,CAAN;CAAmD,WAAO5K,IAAI,CAAC6K,IAAL,CAAU7N,IAAI,GAAC4N,SAAf,IAA0BA,SAAjC;CAA2C;;CAAA,WAASE,SAAT,CAAmB9N,IAAnB,EAAwB;CAACA,IAAAA,IAAI,GAAC2N,WAAW,CAAC3N,IAAD,EAAM,KAAN,CAAhB;;CAA6B,QAAI/B,GAAG,GAAC8P,4BAA4B,CAAC,KAAD,EAAO/N,IAAP,CAApC;;CAAiD,QAAG,CAAC/B,GAAJ,EAAQ,OAAO,CAAP;CAASuP,IAAAA,UAAU,CAACvP,GAAD,EAAK+B,IAAL,CAAV;CAAqB,WAAO/B,GAAP;CAAW;;CAAA,MAAI+P,KAAK,GAAC;CAACC,IAAAA,SAAS,EAAC,IAAX;CAAgBC,IAAAA,KAAK,EAAC,UAASA,KAAT,EAAe;CAAC,aAAOF,KAAK,CAACG,UAAN,CAAiB,IAAjB,EAAsB,GAAtB,EAA0B,QAAM,GAAhC,EAAoC,CAApC,CAAP;CAA8C,KAApF;CAAqFA,IAAAA,UAAU,EAAC,UAASC,MAAT,EAAgBzJ,IAAhB,EAAqB0J,IAArB,EAA0BhD,GAA1B,EAA8B;CAAC,UAAG9I,EAAE,CAAC+L,QAAH,CAAYD,IAAZ,KAAmB9L,EAAE,CAACgM,MAAH,CAAUF,IAAV,CAAtB,EAAsC;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACkC,KAAK,CAACC,SAAV,EAAoB;CAACD,QAAAA,KAAK,CAACC,SAAN,GAAgB;CAAClF,UAAAA,GAAG,EAAC;CAAC1R,YAAAA,IAAI,EAAC;CAACmX,cAAAA,OAAO,EAACR,KAAK,CAACS,QAAN,CAAeD,OAAxB;CAAgCE,cAAAA,OAAO,EAACV,KAAK,CAACS,QAAN,CAAeC,OAAvD;CAA+DC,cAAAA,MAAM,EAACX,KAAK,CAACS,QAAN,CAAeE,MAArF;CAA4FC,cAAAA,KAAK,EAACZ,KAAK,CAACS,QAAN,CAAeG,KAAjH;CAAuHC,cAAAA,MAAM,EAACb,KAAK,CAACS,QAAN,CAAeI,MAA7I;CAAoJC,cAAAA,MAAM,EAACd,KAAK,CAACS,QAAN,CAAeK,MAA1K;CAAiLC,cAAAA,KAAK,EAACf,KAAK,CAACS,QAAN,CAAeM,KAAtM;CAA4MC,cAAAA,OAAO,EAAChB,KAAK,CAACS,QAAN,CAAeO,OAAnO;CAA2OC,cAAAA,OAAO,EAACjB,KAAK,CAACS,QAAN,CAAeQ;CAAlQ,aAAN;CAAiRtD,YAAAA,MAAM,EAAC;CAACuD,cAAAA,MAAM,EAAClB,KAAK,CAACtC,UAAN,CAAiBwD;CAAzB;CAAxR,WAAL;CAA+T/J,UAAAA,IAAI,EAAC;CAAC9N,YAAAA,IAAI,EAAC;CAACmX,cAAAA,OAAO,EAACR,KAAK,CAACS,QAAN,CAAeD,OAAxB;CAAgCE,cAAAA,OAAO,EAACV,KAAK,CAACS,QAAN,CAAeC;CAAvD,aAAN;CAAsE/C,YAAAA,MAAM,EAAC;CAACuD,cAAAA,MAAM,EAAClB,KAAK,CAACtC,UAAN,CAAiBwD,MAAzB;CAAgCtV,cAAAA,IAAI,EAACoU,KAAK,CAACtC,UAAN,CAAiB9R,IAAtD;CAA2D6S,cAAAA,KAAK,EAACuB,KAAK,CAACtC,UAAN,CAAiBe,KAAlF;CAAwF0C,cAAAA,QAAQ,EAACnB,KAAK,CAACtC,UAAN,CAAiByD,QAAlH;CAA2HC,cAAAA,IAAI,EAACpB,KAAK,CAACtC,UAAN,CAAiB0D,IAAjJ;CAAsJC,cAAAA,KAAK,EAACrB,KAAK,CAACtC,UAAN,CAAiB2D;CAA7K;CAA7E,WAApU;CAAskBC,UAAAA,IAAI,EAAC;CAACjY,YAAAA,IAAI,EAAC;CAACmX,cAAAA,OAAO,EAACR,KAAK,CAACS,QAAN,CAAeD,OAAxB;CAAgCE,cAAAA,OAAO,EAACV,KAAK,CAACS,QAAN,CAAeC,OAAvD;CAA+Da,cAAAA,QAAQ,EAACvB,KAAK,CAACS,QAAN,CAAec;CAAvF,aAAN;CAAuG5D,YAAAA,MAAM,EAAC;CAA9G,WAA3kB;CAA6rB6D,UAAAA,MAAM,EAAC;CAACnY,YAAAA,IAAI,EAAC;CAACmX,cAAAA,OAAO,EAACR,KAAK,CAACS,QAAN,CAAeD,OAAxB;CAAgCE,cAAAA,OAAO,EAACV,KAAK,CAACS,QAAN,CAAeC;CAAvD,aAAN;CAAsE/C,YAAAA,MAAM,EAACpJ,EAAE,CAACkN;CAAhF;CAApsB,SAAhB;CAAwzB;;CAAA,UAAIpY,IAAI,GAACkL,EAAE,CAAC4L,UAAH,CAAcC,MAAd,EAAqBzJ,IAArB,EAA0B0J,IAA1B,EAA+BhD,GAA/B,CAAT;;CAA6C,UAAG9I,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAH,EAAuB;CAAChX,QAAAA,IAAI,CAACoX,QAAL,GAAcT,KAAK,CAACC,SAAN,CAAgBlF,GAAhB,CAAoB1R,IAAlC;CAAuCA,QAAAA,IAAI,CAACqU,UAAL,GAAgBsC,KAAK,CAACC,SAAN,CAAgBlF,GAAhB,CAAoB4C,MAApC;CAA2CtU,QAAAA,IAAI,CAACsY,QAAL,GAAc,EAAd;CAAiB,OAA3H,MAAgI,IAAGpN,EAAE,CAACqN,MAAH,CAAUvY,IAAI,CAACgX,IAAf,CAAH,EAAwB;CAAChX,QAAAA,IAAI,CAACoX,QAAL,GAAcT,KAAK,CAACC,SAAN,CAAgB9I,IAAhB,CAAqB9N,IAAnC;CAAwCA,QAAAA,IAAI,CAACqU,UAAL,GAAgBsC,KAAK,CAACC,SAAN,CAAgB9I,IAAhB,CAAqBwG,MAArC;CAA4CtU,QAAAA,IAAI,CAACwY,SAAL,GAAe,CAAf;CAAiBxY,QAAAA,IAAI,CAACsY,QAAL,GAAc,IAAd;CAAmB,OAAjJ,MAAsJ,IAAGpN,EAAE,CAACuN,MAAH,CAAUzY,IAAI,CAACgX,IAAf,CAAH,EAAwB;CAAChX,QAAAA,IAAI,CAACoX,QAAL,GAAcT,KAAK,CAACC,SAAN,CAAgBqB,IAAhB,CAAqBjY,IAAnC;CAAwCA,QAAAA,IAAI,CAACqU,UAAL,GAAgBsC,KAAK,CAACC,SAAN,CAAgBqB,IAAhB,CAAqB3D,MAArC;CAA4C,OAA7G,MAAkH,IAAGpJ,EAAE,CAACwN,QAAH,CAAY1Y,IAAI,CAACgX,IAAjB,CAAH,EAA0B;CAAChX,QAAAA,IAAI,CAACoX,QAAL,GAAcT,KAAK,CAACC,SAAN,CAAgBuB,MAAhB,CAAuBnY,IAArC;CAA0CA,QAAAA,IAAI,CAACqU,UAAL,GAAgBsC,KAAK,CAACC,SAAN,CAAgBuB,MAAhB,CAAuB7D,MAAvC;CAA8C;;CAAAtU,MAAAA,IAAI,CAACiV,SAAL,GAAeC,IAAI,CAACC,GAAL,EAAf;;CAA0B,UAAG4B,MAAH,EAAU;CAACA,QAAAA,MAAM,CAACuB,QAAP,CAAgBhL,IAAhB,IAAsBtN,IAAtB;CAA2B+W,QAAAA,MAAM,CAAC9B,SAAP,GAAiBjV,IAAI,CAACiV,SAAtB;CAAgC;;CAAA,aAAOjV,IAAP;CAAY,KAAnqD;CAAoqD2Y,IAAAA,uBAAuB,EAAC,UAAS3Y,IAAT,EAAc;CAAC,UAAG,CAACA,IAAI,CAACsY,QAAT,EAAkB,OAAO,IAAI9W,UAAJ,CAAe,CAAf,CAAP;CAAyB,UAAGxB,IAAI,CAACsY,QAAL,CAAcpS,QAAjB,EAA0B,OAAOlG,IAAI,CAACsY,QAAL,CAAcpS,QAAd,CAAuB,CAAvB,EAAyBlG,IAAI,CAACwY,SAA9B,CAAP;CAAgD,aAAO,IAAIhX,UAAJ,CAAexB,IAAI,CAACsY,QAApB,CAAP;CAAqC,KAAr2D;CAAs2DM,IAAAA,iBAAiB,EAAC,UAAS5Y,IAAT,EAAc6Y,WAAd,EAA0B;CAAC,UAAIC,YAAY,GAAC9Y,IAAI,CAACsY,QAAL,GAActY,IAAI,CAACsY,QAAL,CAAcvW,MAA5B,GAAmC,CAApD;CAAsD,UAAG+W,YAAY,IAAED,WAAjB,EAA6B;CAAO,UAAIE,qBAAqB,GAAC,OAAK,IAA/B;CAAoCF,MAAAA,WAAW,GAAClN,IAAI,CAACzB,GAAL,CAAS2O,WAAT,EAAqBC,YAAY,IAAEA,YAAY,GAACC,qBAAb,GAAmC,CAAnC,GAAqC,KAAvC,CAAZ,KAA4D,CAAjF,CAAZ;CAAgG,UAAGD,YAAY,IAAE,CAAjB,EAAmBD,WAAW,GAAClN,IAAI,CAACzB,GAAL,CAAS2O,WAAT,EAAqB,GAArB,CAAZ;CAAsC,UAAIG,WAAW,GAAChZ,IAAI,CAACsY,QAArB;CAA8BtY,MAAAA,IAAI,CAACsY,QAAL,GAAc,IAAI9W,UAAJ,CAAeqX,WAAf,CAAd;CAA0C,UAAG7Y,IAAI,CAACwY,SAAL,GAAe,CAAlB,EAAoBxY,IAAI,CAACsY,QAAL,CAAcvO,GAAd,CAAkBiP,WAAW,CAAC9S,QAAZ,CAAqB,CAArB,EAAuBlG,IAAI,CAACwY,SAA5B,CAAlB,EAAyD,CAAzD;CAA4D,KAAl0E;CAAm0ES,IAAAA,iBAAiB,EAAC,UAASjZ,IAAT,EAAckZ,OAAd,EAAsB;CAAC,UAAGlZ,IAAI,CAACwY,SAAL,IAAgBU,OAAnB,EAA2B;;CAAO,UAAGA,OAAO,IAAE,CAAZ,EAAc;CAAClZ,QAAAA,IAAI,CAACsY,QAAL,GAAc,IAAd;CAAmBtY,QAAAA,IAAI,CAACwY,SAAL,GAAe,CAAf;CAAiB,OAAnD,MAAuD;CAAC,YAAIQ,WAAW,GAAChZ,IAAI,CAACsY,QAArB;CAA8BtY,QAAAA,IAAI,CAACsY,QAAL,GAAc,IAAI9W,UAAJ,CAAe0X,OAAf,CAAd;;CAAsC,YAAGF,WAAH,EAAe;CAAChZ,UAAAA,IAAI,CAACsY,QAAL,CAAcvO,GAAd,CAAkBiP,WAAW,CAAC9S,QAAZ,CAAqB,CAArB,EAAuByF,IAAI,CAAC4H,GAAL,CAAS2F,OAAT,EAAiBlZ,IAAI,CAACwY,SAAtB,CAAvB,CAAlB;CAA4E;;CAAAxY,QAAAA,IAAI,CAACwY,SAAL,GAAeU,OAAf;CAAuB;CAAC,KAA9nF;CAA+nF9B,IAAAA,QAAQ,EAAC;CAACD,MAAAA,OAAO,EAAC,UAASnX,IAAT,EAAc;CAAC,YAAImZ,IAAI,GAAC,EAAT;CAAYA,QAAAA,IAAI,CAACnF,GAAL,GAAS9I,EAAE,CAACwN,QAAH,CAAY1Y,IAAI,CAACgX,IAAjB,IAAuBhX,IAAI,CAACqM,EAA5B,GAA+B,CAAxC;CAA0C8M,QAAAA,IAAI,CAACC,GAAL,GAASpZ,IAAI,CAACqM,EAAd;CAAiB8M,QAAAA,IAAI,CAACnC,IAAL,GAAUhX,IAAI,CAACgX,IAAf;CAAoBmC,QAAAA,IAAI,CAACE,KAAL,GAAW,CAAX;CAAaF,QAAAA,IAAI,CAACG,GAAL,GAAS,CAAT;CAAWH,QAAAA,IAAI,CAACI,GAAL,GAAS,CAAT;CAAWJ,QAAAA,IAAI,CAAC3E,IAAL,GAAUxU,IAAI,CAACwU,IAAf;;CAAoB,YAAGtJ,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAH,EAAuB;CAACmC,UAAAA,IAAI,CAACxQ,IAAL,GAAU,IAAV;CAAe,SAAvC,MAA4C,IAAGuC,EAAE,CAACqN,MAAH,CAAUvY,IAAI,CAACgX,IAAf,CAAH,EAAwB;CAACmC,UAAAA,IAAI,CAACxQ,IAAL,GAAU3I,IAAI,CAACwY,SAAf;CAAyB,SAAlD,MAAuD,IAAGtN,EAAE,CAACuN,MAAH,CAAUzY,IAAI,CAACgX,IAAf,CAAH,EAAwB;CAACmC,UAAAA,IAAI,CAACxQ,IAAL,GAAU3I,IAAI,CAACiY,IAAL,CAAUlW,MAApB;CAA2B,SAApD,MAAwD;CAACoX,UAAAA,IAAI,CAACxQ,IAAL,GAAU,CAAV;CAAY;;CAAAwQ,QAAAA,IAAI,CAACK,KAAL,GAAW,IAAItE,IAAJ,CAASlV,IAAI,CAACiV,SAAd,CAAX;CAAoCkE,QAAAA,IAAI,CAACM,KAAL,GAAW,IAAIvE,IAAJ,CAASlV,IAAI,CAACiV,SAAd,CAAX;CAAoCkE,QAAAA,IAAI,CAACO,KAAL,GAAW,IAAIxE,IAAJ,CAASlV,IAAI,CAACiV,SAAd,CAAX;CAAoCkE,QAAAA,IAAI,CAACQ,OAAL,GAAa,IAAb;CAAkBR,QAAAA,IAAI,CAACS,MAAL,GAAYjO,IAAI,CAAC6K,IAAL,CAAU2C,IAAI,CAACxQ,IAAL,GAAUwQ,IAAI,CAACQ,OAAzB,CAAZ;CAA8C,eAAOR,IAAP;CAAY,OAA1gB;CAA2gB9B,MAAAA,OAAO,EAAC,UAASrX,IAAT,EAAcmZ,IAAd,EAAmB;CAAC,YAAGA,IAAI,CAACnC,IAAL,KAAY3V,SAAf,EAAyB;CAACrB,UAAAA,IAAI,CAACgX,IAAL,GAAUmC,IAAI,CAACnC,IAAf;CAAoB;;CAAA,YAAGmC,IAAI,CAAClE,SAAL,KAAiB5T,SAApB,EAA8B;CAACrB,UAAAA,IAAI,CAACiV,SAAL,GAAekE,IAAI,CAAClE,SAApB;CAA8B;;CAAA,YAAGkE,IAAI,CAACxQ,IAAL,KAAYtH,SAAf,EAAyB;CAACsV,UAAAA,KAAK,CAACsC,iBAAN,CAAwBjZ,IAAxB,EAA6BmZ,IAAI,CAACxQ,IAAlC;CAAwC;CAAC,OAArtB;CAAstB2O,MAAAA,MAAM,EAAC,UAASP,MAAT,EAAgBzJ,IAAhB,EAAqB;CAAC,cAAMpC,EAAE,CAAC2O,aAAH,CAAiB,EAAjB,CAAN;CAA2B,OAA9wB;CAA+wBtC,MAAAA,KAAK,EAAC,UAASR,MAAT,EAAgBzJ,IAAhB,EAAqB0J,IAArB,EAA0BhD,GAA1B,EAA8B;CAAC,eAAO2C,KAAK,CAACG,UAAN,CAAiBC,MAAjB,EAAwBzJ,IAAxB,EAA6B0J,IAA7B,EAAkChD,GAAlC,CAAP;CAA8C,OAAl2B;CAAm2BwD,MAAAA,MAAM,EAAC,UAASsC,QAAT,EAAkBC,OAAlB,EAA0BC,QAA1B,EAAmC;CAAC,YAAG9O,EAAE,CAACmN,KAAH,CAASyB,QAAQ,CAAC9C,IAAlB,CAAH,EAA2B;CAAC,cAAIiD,QAAJ;;CAAa,cAAG;CAACA,YAAAA,QAAQ,GAAC/O,EAAE,CAACgP,UAAH,CAAcH,OAAd,EAAsBC,QAAtB,CAAT;CAAyC,WAA7C,CAA6C,OAAMjN,CAAN,EAAQ;;CAAE,cAAGkN,QAAH,EAAY;CAAC,iBAAI,IAAI9S,CAAR,IAAa8S,QAAQ,CAAC3B,QAAtB,EAA+B;CAAC,oBAAM,IAAIpN,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAC;CAAC;;CAAA,eAAOqF,QAAQ,CAAC/C,MAAT,CAAgBuB,QAAhB,CAAyBwB,QAAQ,CAACxM,IAAlC,CAAP;CAA+CwM,QAAAA,QAAQ,CAAC/C,MAAT,CAAgB9B,SAAhB,GAA0BC,IAAI,CAACC,GAAL,EAA1B;CAAqC2E,QAAAA,QAAQ,CAACxM,IAAT,GAAc0M,QAAd;CAAuBD,QAAAA,OAAO,CAACzB,QAAR,CAAiB0B,QAAjB,IAA2BF,QAA3B;CAAoCC,QAAAA,OAAO,CAAC9E,SAAR,GAAkB6E,QAAQ,CAAC/C,MAAT,CAAgB9B,SAAlC;CAA4C6E,QAAAA,QAAQ,CAAC/C,MAAT,GAAgBgD,OAAhB;CAAwB,OAA5wC;CAA6wCtC,MAAAA,MAAM,EAAC,UAASV,MAAT,EAAgBzJ,IAAhB,EAAqB;CAAC,eAAOyJ,MAAM,CAACuB,QAAP,CAAgBhL,IAAhB,CAAP;CAA6ByJ,QAAAA,MAAM,CAAC9B,SAAP,GAAiBC,IAAI,CAACC,GAAL,EAAjB;CAA4B,OAAn2C;CAAo2CuC,MAAAA,KAAK,EAAC,UAASX,MAAT,EAAgBzJ,IAAhB,EAAqB;CAAC,YAAItN,IAAI,GAACkL,EAAE,CAACgP,UAAH,CAAcnD,MAAd,EAAqBzJ,IAArB,CAAT;;CAAoC,aAAI,IAAInG,CAAR,IAAanH,IAAI,CAACsY,QAAlB,EAA2B;CAAC,gBAAM,IAAIpN,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,eAAOsC,MAAM,CAACuB,QAAP,CAAgBhL,IAAhB,CAAP;CAA6ByJ,QAAAA,MAAM,CAAC9B,SAAP,GAAiBC,IAAI,CAACC,GAAL,EAAjB;CAA4B,OAArhD;CAAshDwC,MAAAA,OAAO,EAAC,UAAS3X,IAAT,EAAc;CAAC,YAAIma,OAAO,GAAC,CAAC,GAAD,EAAK,IAAL,CAAZ;;CAAuB,aAAI,IAAIC,GAAR,IAAepa,IAAI,CAACsY,QAApB,EAA6B;CAAC,cAAG,CAACtY,IAAI,CAACsY,QAAL,CAAc+B,cAAd,CAA6BD,GAA7B,CAAJ,EAAsC;CAAC;CAAS;;CAAAD,UAAAA,OAAO,CAACzG,IAAR,CAAa0G,GAAb;CAAkB;;CAAA,eAAOD,OAAP;CAAe,OAAnrD;CAAorDvC,MAAAA,OAAO,EAAC,UAASb,MAAT,EAAgBuD,OAAhB,EAAwBC,OAAxB,EAAgC;CAAC,YAAIva,IAAI,GAAC2W,KAAK,CAACG,UAAN,CAAiBC,MAAjB,EAAwBuD,OAAxB,EAAgC,MAAI,KAApC,EAA0C,CAA1C,CAAT;CAAsDta,QAAAA,IAAI,CAACiY,IAAL,GAAUsC,OAAV;CAAkB,eAAOva,IAAP;CAAY,OAAjzD;CAAkzDkY,MAAAA,QAAQ,EAAC,UAASlY,IAAT,EAAc;CAAC,YAAG,CAACkL,EAAE,CAACuN,MAAH,CAAUzY,IAAI,CAACgX,IAAf,CAAJ,EAAyB;CAAC,gBAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,eAAOzU,IAAI,CAACiY,IAAZ;CAAiB;CAAj5D,KAAxoF;CAA2hJ5D,IAAAA,UAAU,EAAC;CAAC9R,MAAAA,IAAI,EAAC,UAAS+R,MAAT,EAAgB/S,MAAhB,EAAuBsT,MAAvB,EAA8B9S,MAA9B,EAAqCyY,QAArC,EAA8C;CAAC,YAAIlC,QAAQ,GAAChE,MAAM,CAACtU,IAAP,CAAYsY,QAAzB;CAAkC,YAAGkC,QAAQ,IAAElG,MAAM,CAACtU,IAAP,CAAYwY,SAAzB,EAAmC,OAAO,CAAP;CAAS,YAAI7P,IAAI,GAACgD,IAAI,CAAC4H,GAAL,CAASe,MAAM,CAACtU,IAAP,CAAYwY,SAAZ,GAAsBgC,QAA/B,EAAwCzY,MAAxC,CAAT;CAAyDN,QAAAA,MAAM,CAACkH,IAAI,IAAE,CAAP,CAAN;;CAAgB,YAAGA,IAAI,GAAC,CAAL,IAAQ2P,QAAQ,CAACpS,QAApB,EAA6B;CAAC3E,UAAAA,MAAM,CAACwI,GAAP,CAAWuO,QAAQ,CAACpS,QAAT,CAAkBsU,QAAlB,EAA2BA,QAAQ,GAAC7R,IAApC,CAAX,EAAqDkM,MAArD;CAA6D,SAA3F,MAA+F;CAAC,eAAI,IAAI1N,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACwB,IAAd,EAAmBxB,CAAC,EAApB,EAAuB5F,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAN,GAAiBmR,QAAQ,CAACkC,QAAQ,GAACrT,CAAV,CAAzB;CAAsC;;CAAA,eAAOwB,IAAP;CAAY,OAArX;CAAsXyM,MAAAA,KAAK,EAAC,UAASd,MAAT,EAAgB/S,MAAhB,EAAuBsT,MAAvB,EAA8B9S,MAA9B,EAAqCyY,QAArC,EAA8CC,MAA9C,EAAqD;CAAChZ,QAAAA,MAAM,CAAC,EAAEF,MAAM,YAAYmZ,WAApB,CAAD,CAAN;;CAAyC,YAAGnZ,MAAM,CAACA,MAAP,KAAgBsH,KAAK,CAACtH,MAAzB,EAAgC;CAACkZ,UAAAA,MAAM,GAAC,KAAP;CAAa;;CAAA,YAAG,CAAC1Y,MAAJ,EAAW,OAAO,CAAP;CAAS,YAAI/B,IAAI,GAACsU,MAAM,CAACtU,IAAhB;CAAqBA,QAAAA,IAAI,CAACiV,SAAL,GAAeC,IAAI,CAACC,GAAL,EAAf;;CAA0B,YAAG5T,MAAM,CAAC2E,QAAP,KAAkB,CAAClG,IAAI,CAACsY,QAAN,IAAgBtY,IAAI,CAACsY,QAAL,CAAcpS,QAAhD,CAAH,EAA6D;CAAC,cAAGuU,MAAH,EAAU;CAAChZ,YAAAA,MAAM,CAAC+Y,QAAQ,KAAG,CAAZ,EAAc,qDAAd,CAAN;CAA2Exa,YAAAA,IAAI,CAACsY,QAAL,GAAc/W,MAAM,CAAC2E,QAAP,CAAgB2O,MAAhB,EAAuBA,MAAM,GAAC9S,MAA9B,CAAd;CAAoD/B,YAAAA,IAAI,CAACwY,SAAL,GAAezW,MAAf;CAAsB,mBAAOA,MAAP;CAAc,WAA9K,MAAmL,IAAG/B,IAAI,CAACwY,SAAL,KAAiB,CAAjB,IAAoBgC,QAAQ,KAAG,CAAlC,EAAoC;CAACxa,YAAAA,IAAI,CAACsY,QAAL,GAAc/W,MAAM,CAACW,KAAP,CAAa2S,MAAb,EAAoBA,MAAM,GAAC9S,MAA3B,CAAd;CAAiD/B,YAAAA,IAAI,CAACwY,SAAL,GAAezW,MAAf;CAAsB,mBAAOA,MAAP;CAAc,WAA1H,MAA+H,IAAGyY,QAAQ,GAACzY,MAAT,IAAiB/B,IAAI,CAACwY,SAAzB,EAAmC;CAACxY,YAAAA,IAAI,CAACsY,QAAL,CAAcvO,GAAd,CAAkBxI,MAAM,CAAC2E,QAAP,CAAgB2O,MAAhB,EAAuBA,MAAM,GAAC9S,MAA9B,CAAlB,EAAwDyY,QAAxD;CAAkE,mBAAOzY,MAAP;CAAc;CAAC;;CAAA4U,QAAAA,KAAK,CAACiC,iBAAN,CAAwB5Y,IAAxB,EAA6Bwa,QAAQ,GAACzY,MAAtC;;CAA8C,YAAG/B,IAAI,CAACsY,QAAL,CAAcpS,QAAd,IAAwB3E,MAAM,CAAC2E,QAAlC,EAA2C;CAAClG,UAAAA,IAAI,CAACsY,QAAL,CAAcvO,GAAd,CAAkBxI,MAAM,CAAC2E,QAAP,CAAgB2O,MAAhB,EAAuBA,MAAM,GAAC9S,MAA9B,CAAlB,EAAwDyY,QAAxD;CAAkE,SAA9G,MAAkH;CAAC,eAAI,IAAIrT,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqBoF,CAAC,EAAtB,EAAyB;CAACnH,YAAAA,IAAI,CAACsY,QAAL,CAAckC,QAAQ,GAACrT,CAAvB,IAA0B5F,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAhC;CAA2C;CAAC;;CAAAnH,QAAAA,IAAI,CAACwY,SAAL,GAAe7M,IAAI,CAACzB,GAAL,CAASlK,IAAI,CAACwY,SAAd,EAAwBgC,QAAQ,GAACzY,MAAjC,CAAf;CAAwD,eAAOA,MAAP;CAAc,OAA91C;CAA+1C8V,MAAAA,MAAM,EAAC,UAASvD,MAAT,EAAgBO,MAAhB,EAAuB8F,MAAvB,EAA8B;CAAC,YAAIH,QAAQ,GAAC3F,MAAb;;CAAoB,YAAG8F,MAAM,KAAG,CAAZ,EAAc;CAACH,UAAAA,QAAQ,IAAElG,MAAM,CAACkG,QAAjB;CAA0B,SAAzC,MAA8C,IAAGG,MAAM,KAAG,CAAZ,EAAc;CAAC,cAAGzP,EAAE,CAACqN,MAAH,CAAUjE,MAAM,CAACtU,IAAP,CAAYgX,IAAtB,CAAH,EAA+B;CAACwD,YAAAA,QAAQ,IAAElG,MAAM,CAACtU,IAAP,CAAYwY,SAAtB;CAAgC;CAAC;;CAAA,YAAGgC,QAAQ,GAAC,CAAZ,EAAc;CAAC,gBAAM,IAAItP,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,eAAO+F,QAAP;CAAgB,OAAllD;CAAmlD1C,MAAAA,QAAQ,EAAC,UAASxD,MAAT,EAAgBO,MAAhB,EAAuB9S,MAAvB,EAA8B;CAAC4U,QAAAA,KAAK,CAACiC,iBAAN,CAAwBtE,MAAM,CAACtU,IAA/B,EAAoC6U,MAAM,GAAC9S,MAA3C;CAAmDuS,QAAAA,MAAM,CAACtU,IAAP,CAAYwY,SAAZ,GAAsB7M,IAAI,CAACzB,GAAL,CAASoK,MAAM,CAACtU,IAAP,CAAYwY,SAArB,EAA+B3D,MAAM,GAAC9S,MAAtC,CAAtB;CAAoE,OAAlvD;CAAmvDgW,MAAAA,IAAI,EAAC,UAASzD,MAAT,EAAgB8B,OAAhB,EAAwBrU,MAAxB,EAA+ByY,QAA/B,EAAwCI,IAAxC,EAA6CC,KAA7C,EAAmD;CAAC,YAAGzE,OAAO,KAAG,CAAb,EAAe;CAAC,gBAAM,IAAIlL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAG,CAACvJ,EAAE,CAACqN,MAAH,CAAUjE,MAAM,CAACtU,IAAP,CAAYgX,IAAtB,CAAJ,EAAgC;CAAC,gBAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAI7N,GAAJ;CAAQ,YAAIkU,SAAJ;CAAc,YAAIxC,QAAQ,GAAChE,MAAM,CAACtU,IAAP,CAAYsY,QAAzB;;CAAkC,YAAG,EAAEuC,KAAK,GAAC,CAAR,KAAYvC,QAAQ,CAAC/W,MAAT,KAAkBA,MAAjC,EAAwC;CAACuZ,UAAAA,SAAS,GAAC,KAAV;CAAgBlU,UAAAA,GAAG,GAAC0R,QAAQ,CAACyC,UAAb;CAAwB,SAAjF,MAAqF;CAAC,cAAGP,QAAQ,GAAC,CAAT,IAAYA,QAAQ,GAACzY,MAAT,GAAgBuW,QAAQ,CAACvW,MAAxC,EAA+C;CAAC,gBAAGuW,QAAQ,CAACpS,QAAZ,EAAqB;CAACoS,cAAAA,QAAQ,GAACA,QAAQ,CAACpS,QAAT,CAAkBsU,QAAlB,EAA2BA,QAAQ,GAACzY,MAApC,CAAT;CAAqD,aAA3E,MAA+E;CAACuW,cAAAA,QAAQ,GAACxG,KAAK,CAAChI,SAAN,CAAgB5H,KAAhB,CAAsB6P,IAAtB,CAA2BuG,QAA3B,EAAoCkC,QAApC,EAA6CA,QAAQ,GAACzY,MAAtD,CAAT;CAAuE;CAAC;;CAAA+Y,UAAAA,SAAS,GAAC,IAAV;CAAelU,UAAAA,GAAG,GAAC6P,SAAS,CAAC1U,MAAD,CAAb;;CAAsB,cAAG,CAAC6E,GAAJ,EAAQ;CAAC,kBAAM,IAAIsE,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA5L,UAAAA,KAAK,CAACkB,GAAN,CAAUuO,QAAV,EAAmB1R,GAAnB;CAAwB;;CAAA,eAAM;CAACA,UAAAA,GAAG,EAACA,GAAL;CAASkU,UAAAA,SAAS,EAACA;CAAnB,SAAN;CAAoC,OAAj3E;CAAk3E9C,MAAAA,KAAK,EAAC,UAAS1D,MAAT,EAAgB/S,MAAhB,EAAuBsT,MAAvB,EAA8B9S,MAA9B,EAAqCiZ,SAArC,EAA+C;CAAC,YAAG,CAAC9P,EAAE,CAACqN,MAAH,CAAUjE,MAAM,CAACtU,IAAP,CAAYgX,IAAtB,CAAJ,EAAgC;CAAC,gBAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAGuG,SAAS,GAAC,CAAb,EAAe;CAAC,iBAAO,CAAP;CAAS;;CAAA,QAAiBrE,KAAK,CAACtC,UAAN,CAAiBe,KAAjB,CAAuBd,MAAvB,EAA8B/S,MAA9B,EAAqC,CAArC,EAAuCQ,MAAvC,EAA8C8S,MAA9C,EAAqD,KAArD;CAA4D,eAAO,CAAP;CAAS;CAAplF;CAAtiJ,GAAV;;CAAuoO,WAASoG,SAAT,CAAmB3X,GAAnB,EAAuB5B,MAAvB,EAA8BC,OAA9B,EAAsCuZ,QAAtC,EAA+C;CAAC,QAAIvO,GAAG,GAAC,CAACuO,QAAD,GAAU9O,sBAAsB,CAAC,QAAM9I,GAAP,CAAhC,GAA4C,EAApD;CAAuD/C,IAAAA,SAAS,CAAC+C,GAAD,EAAK,UAAS6X,WAAT,EAAqB;CAAC1Z,MAAAA,MAAM,CAAC0Z,WAAD,EAAa,wBAAsB7X,GAAtB,GAA0B,4BAAvC,CAAN;CAA2E5B,MAAAA,MAAM,CAAC,IAAIF,UAAJ,CAAe2Z,WAAf,CAAD,CAAN;CAAoC,UAAGxO,GAAH,EAAOC,mBAAmB,CAACD,GAAD,CAAnB;CAAyB,KAA1K,EAA2K,UAASyO,KAAT,EAAe;CAAC,UAAGzZ,OAAH,EAAW;CAACA,QAAAA,OAAO;CAAG,OAAtB,MAA0B;CAAC,cAAK,wBAAsB2B,GAAtB,GAA0B,WAA/B;CAA2C;CAAC,KAAlQ,CAAT;CAA6Q,QAAGqJ,GAAH,EAAOH,gBAAgB,CAACG,GAAD,CAAhB;CAAsB;;CAAA,MAAI0O,cAAc,GAAC;CAAC,OAAE,SAAH;CAAa,OAAE,mBAAf;CAAmC,OAAE,mBAArC;CAAyD,OAAE,wBAA3D;CAAoF,OAAE,uBAAtF;CAA8G,OAAE,iDAAhH;CAAkK,OAAE,mBAApK;CAAwL,OAAE,0BAA1L;CAAqN,OAAE,iBAAvN;CAAyO,OAAE,mCAA3O;CAA+Q,QAAG,mBAAlR;CAAsS,QAAG,oBAAzS;CAA8T,QAAG,aAAjU;CAA+U,QAAG,oBAAlV;CAAuW,QAAG,oBAA1W;CAA+X,QAAG,0BAAlY;CAA6Z,QAAG,6BAAha;CAA8b,QAAG,8BAAjc;CAAge,QAAG,gCAAne;CAAogB,QAAG,gBAAvgB;CAAwhB,QAAG,aAA3hB;CAAyiB,QAAG,aAA5iB;CAA0jB,QAAG,gBAA7jB;CAA8kB,QAAG,qBAAjlB;CAAumB,QAAG,oBAA1mB;CAA+nB,QAAG,uBAAloB;CAA0pB,QAAG,gCAA7pB;CAA8rB,QAAG,yBAAjsB;CAA2tB,QAAG,kBAA9tB;CAAivB,QAAG,WAApvB;CAAgwB,QAAG,6BAAnwB;CAAiyB,QAAG,gBAApyB;CAAqzB,QAAG,yBAAxzB;CAAk1B,QAAG,qBAAr1B;CAA22B,QAAG,gBAA92B;CAA+3B,QAAG,kBAAl4B;CAAq5B,QAAG,oBAAx5B;CAA66B,QAAG,4BAAh7B;CAA68B,QAAG,qCAAh9B;CAAs/B,QAAG,6BAAz/B;CAAuhC,QAAG,wBAA1hC;CAAmjC,QAAG,+BAAtjC;CAAslC,QAAG,2BAAzlC;CAAqnC,QAAG,gBAAxnC;CAAyoC,QAAG,2BAA5oC;CAAwqC,QAAG,mBAA3qC;CAA+rC,QAAG,2BAAlsC;CAA8tC,QAAG,2BAAjuC;CAA6vC,QAAG,iBAAhwC;CAAkxC,QAAG,4BAArxC;CAAkzC,QAAG,wBAArzC;CAA80C,QAAG,yBAAj1C;CAA22C,QAAG,0BAA92C;CAAy4C,QAAG,yBAA54C;CAAs6C,QAAG,iBAAz6C;CAA27C,QAAG,qBAA97C;CAAo9C,QAAG,uBAAv9C;CAA++C,QAAG,gCAAl/C;CAAmhD,QAAG,kBAAthD;CAAyiD,QAAG,2BAA5iD;CAAwkD,QAAG,uCAA3kD;CAAmnD,QAAG,qBAAtnD;CAA4oD,QAAG,gBAA/oD;CAAgqD,QAAG,aAAnqD;CAAirD,QAAG,gBAAprD;CAAqsD,QAAG,kBAAxsD;CAA2tD,QAAG,gCAA9tD;CAA+vD,QAAG,+BAAlwD;CAAkyD,QAAG,uBAAryD;CAA6zD,QAAG,cAAh0D;CAA+0D,QAAG,iBAAl1D;CAAo2D,QAAG,mBAAv2D;CAA23D,QAAG,sBAA93D;CAAq5D,QAAG,gBAAx5D;CAAy6D,QAAG,mBAA56D;CAAg8D,SAAI,qBAAp8D;CAA09D,SAAI,mBAA99D;CAAk/D,SAAI,cAAt/D;CAAqgE,SAAI,sBAAzgE;CAAgiE,SAAI,UAApiE;CAA+iE,SAAI,uBAAnjE;CAA2kE,SAAI,6BAA/kE;CAA6mE,SAAI,gBAAjnE;CAAkoE,SAAI,eAAtoE;CAAspE,SAAI,0BAA1pE;CAAqrE,SAAI,8BAAzrE;CAAwtE,SAAI,4BAA5tE;CAAyvE,SAAI,gBAA7vE;CAA8wE,SAAI,kBAAlxE;CAAqyE,SAAI,4BAAzyE;CAAs0E,SAAI,eAA10E;CAA01E,SAAI,2BAA91E;CAA03E,SAAI,eAA93E;CAA84E,SAAI,0BAAl5E;CAA66E,SAAI,+BAAj7E;CAAi9E,SAAI,uBAAr9E;CAA6+E,SAAI,sBAAj/E;CAAwgF,SAAI,iBAA5gF;CAA8hF,SAAI,eAAliF;CAAkjF,SAAI,6BAAtjF;CAAolF,SAAI,sCAAxlF;CAA+nF,SAAI,4BAAnoF;CAAgqF,SAAI,iCAApqF;CAAssF,SAAI,wBAA1sF;CAAmuF,SAAI,kCAAvuF;CAA0wF,SAAI,kCAA9wF;CAAizF,SAAI,iCAArzF;CAAu1F,SAAI,qCAA31F;CAAi4F,SAAI,qCAAr4F;CAA26F,SAAI,oBAA/6F;CAAo8F,SAAI,gBAAx8F;CAAy9F,SAAI,2BAA79F;CAAy/F,SAAI,eAA7/F;CAA6gG,SAAI,+BAAjhG;CAAijG,SAAI,kCAArjG;CAAwlG,SAAI,qBAA5lG;CAAknG,SAAI,cAAtnG;CAAqoG,SAAI,2BAAzoG;CAAqqG,SAAI;CAAzqG,GAAnB;CAAwtG,MAAIC,WAAW,GAAC,EAAhB;CAAmB,MAAIpQ,EAAE,GAAC;CAACuG,IAAAA,IAAI,EAAC,IAAN;CAAW8J,IAAAA,MAAM,EAAC,EAAlB;CAAqBC,IAAAA,OAAO,EAAC,EAA7B;CAAgCC,IAAAA,OAAO,EAAC,EAAxC;CAA2CC,IAAAA,SAAS,EAAC,CAArD;CAAuDC,IAAAA,SAAS,EAAC,IAAjE;CAAsEC,IAAAA,WAAW,EAAC,GAAlF;CAAsFxQ,IAAAA,WAAW,EAAC,KAAlG;CAAwGC,IAAAA,iBAAiB,EAAC,IAA1H;CAA+HoJ,IAAAA,UAAU,EAAC,IAA1I;CAA+IoF,IAAAA,aAAa,EAAC,EAA7J;CAAgKgC,IAAAA,WAAW,EAAC,IAA5K;CAAiLC,IAAAA,cAAc,EAAC,CAAhM;CAAkMC,IAAAA,UAAU,EAAC,UAAC1b,IAAD,EAAgB;CAAA,UAAV2b,IAAU,uEAAL,EAAK;CAAC3b,MAAAA,IAAI,GAACoS,OAAO,CAACpE,OAAR,CAAgBnD,EAAE,CAAC0H,GAAH,EAAhB,EAAyBvS,IAAzB,CAAL;CAAoC,UAAG,CAACA,IAAJ,EAAS,OAAM;CAACA,QAAAA,IAAI,EAAC,EAAN;CAASL,QAAAA,IAAI,EAAC;CAAd,OAAN;CAA0B,UAAIic,QAAQ,GAAC;CAACC,QAAAA,YAAY,EAAC,IAAd;CAAmBC,QAAAA,aAAa,EAAC;CAAjC,OAAb;CAAiDH,MAAAA,IAAI,GAAC1c,MAAM,CAACC,MAAP,CAAc0c,QAAd,EAAuBD,IAAvB,CAAL;;CAAkC,UAAGA,IAAI,CAACG,aAAL,GAAmB,CAAtB,EAAwB;CAAC,cAAM,IAAIjR,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAI5D,KAAK,GAACP,IAAI,CAACM,cAAL,CAAoBvQ,IAAI,CAACgR,KAAL,CAAW,GAAX,EAAgBC,MAAhB,CAAuBC,CAAC,IAAE,CAAC,CAACA,CAA5B,CAApB,EAAmD,KAAnD,CAAV;CAAoE,UAAI6K,OAAO,GAAClR,EAAE,CAACuG,IAAf;CAAoB,UAAI4K,YAAY,GAAC,GAAjB;;CAAqB,WAAI,IAAIlV,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC0J,KAAK,CAAC9O,MAApB,EAA2BoF,CAAC,EAA5B,EAA+B;CAAC,YAAImV,MAAM,GAACnV,CAAC,KAAG0J,KAAK,CAAC9O,MAAN,GAAa,CAA5B;;CAA8B,YAAGua,MAAM,IAAEN,IAAI,CAACjF,MAAhB,EAAuB;CAAC;CAAM;;CAAAqF,QAAAA,OAAO,GAAClR,EAAE,CAACgP,UAAH,CAAckC,OAAd,EAAsBvL,KAAK,CAAC1J,CAAD,CAA3B,CAAR;CAAwCkV,QAAAA,YAAY,GAAC/L,IAAI,CAAC0B,KAAL,CAAWqK,YAAX,EAAwBxL,KAAK,CAAC1J,CAAD,CAA7B,CAAb;;CAA+C,YAAG+D,EAAE,CAACqR,YAAH,CAAgBH,OAAhB,CAAH,EAA4B;CAAC,cAAG,CAACE,MAAD,IAASA,MAAM,IAAEN,IAAI,CAACE,YAAzB,EAAsC;CAACE,YAAAA,OAAO,GAACA,OAAO,CAACI,OAAR,CAAgB/K,IAAxB;CAA6B;CAAC;;CAAA,YAAG,CAAC6K,MAAD,IAASN,IAAI,CAACS,MAAjB,EAAwB;CAAC,cAAIC,KAAK,GAAC,CAAV;;CAAY,iBAAMxR,EAAE,CAACuN,MAAH,CAAU2D,OAAO,CAACpF,IAAlB,CAAN,EAA8B;CAAC,gBAAIiB,IAAI,GAAC/M,EAAE,CAACgN,QAAH,CAAYmE,YAAZ,CAAT;CAAmCA,YAAAA,YAAY,GAAC5J,OAAO,CAACpE,OAAR,CAAgBiC,IAAI,CAACxP,OAAL,CAAaub,YAAb,CAAhB,EAA2CpE,IAA3C,CAAb;CAA8D,gBAAIX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAcM,YAAd,EAA2B;CAACF,cAAAA,aAAa,EAACH,IAAI,CAACG,aAAL,GAAmB;CAAlC,aAA3B,CAAX;CAA4EC,YAAAA,OAAO,GAAC9E,MAAM,CAACtX,IAAf;;CAAoB,gBAAG0c,KAAK,KAAG,EAAX,EAAc;CAAC,oBAAM,IAAIxR,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAC;CAAC;CAAC;;CAAA,aAAM;CAACpU,QAAAA,IAAI,EAACgc,YAAN;CAAmBrc,QAAAA,IAAI,EAACoc;CAAxB,OAAN;CAAuC,KAAzoC;CAA0oCO,IAAAA,OAAO,EAAC3c,IAAI,IAAE;CAAC,UAAIK,IAAJ;;CAAS,aAAM,IAAN,EAAW;CAAC,YAAG6K,EAAE,CAAC0R,MAAH,CAAU5c,IAAV,CAAH,EAAmB;CAAC,cAAI6W,KAAK,GAAC7W,IAAI,CAAC6W,KAAL,CAAWgG,UAArB;CAAgC,cAAG,CAACxc,IAAJ,EAAS,OAAOwW,KAAP;CAAa,iBAAOA,KAAK,CAACA,KAAK,CAAC9U,MAAN,GAAa,CAAd,CAAL,KAAwB,GAAxB,GAA4B8U,KAAK,GAAC,GAAN,GAAUxW,IAAtC,GAA2CwW,KAAK,GAACxW,IAAxD;CAA6D;;CAAAA,QAAAA,IAAI,GAACA,IAAI,GAACL,IAAI,CAACsN,IAAL,GAAU,GAAV,GAAcjN,IAAf,GAAoBL,IAAI,CAACsN,IAAlC;CAAuCtN,QAAAA,IAAI,GAACA,IAAI,CAAC+W,MAAV;CAAiB;CAAC,KAA92C;CAA+2C+F,IAAAA,QAAQ,EAAC,CAACC,QAAD,EAAUzP,IAAV,KAAiB;CAAC,UAAI0P,IAAI,GAAC,CAAT;;CAAW,WAAI,IAAI7V,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACmG,IAAI,CAACvL,MAAnB,EAA0BoF,CAAC,EAA3B,EAA8B;CAAC6V,QAAAA,IAAI,GAAC,CAACA,IAAI,IAAE,CAAP,IAAUA,IAAV,GAAe1P,IAAI,CAACjG,UAAL,CAAgBF,CAAhB,CAAf,GAAkC,CAAvC;CAAyC;;CAAA,aAAM,CAAC4V,QAAQ,GAACC,IAAT,KAAgB,CAAjB,IAAoB9R,EAAE,CAACyQ,SAAH,CAAa5Z,MAAvC;CAA8C,KAA3gD;CAA4gDkb,IAAAA,WAAW,EAACjd,IAAI,IAAE;CAAC,UAAIgd,IAAI,GAAC9R,EAAE,CAAC4R,QAAH,CAAY9c,IAAI,CAAC+W,MAAL,CAAY1K,EAAxB,EAA2BrM,IAAI,CAACsN,IAAhC,CAAT;CAA+CtN,MAAAA,IAAI,CAACkd,SAAL,GAAehS,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,CAAf;CAAkC9R,MAAAA,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,IAAmBhd,IAAnB;CAAwB,KAAxoD;CAAyoDmd,IAAAA,cAAc,EAACnd,IAAI,IAAE;CAAC,UAAIgd,IAAI,GAAC9R,EAAE,CAAC4R,QAAH,CAAY9c,IAAI,CAAC+W,MAAL,CAAY1K,EAAxB,EAA2BrM,IAAI,CAACsN,IAAhC,CAAT;;CAA+C,UAAGpC,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,MAAqBhd,IAAxB,EAA6B;CAACkL,QAAAA,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,IAAmBhd,IAAI,CAACkd,SAAxB;CAAkC,OAAhE,MAAoE;CAAC,YAAId,OAAO,GAAClR,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,CAAZ;;CAA+B,eAAMZ,OAAN,EAAc;CAAC,cAAGA,OAAO,CAACc,SAAR,KAAoBld,IAAvB,EAA4B;CAACoc,YAAAA,OAAO,CAACc,SAAR,GAAkBld,IAAI,CAACkd,SAAvB;CAAiC;CAAM;;CAAAd,UAAAA,OAAO,GAACA,OAAO,CAACc,SAAhB;CAA0B;CAAC;CAAC,KAAj6D;CAAk6DhD,IAAAA,UAAU,EAAC,CAACnD,MAAD,EAAQzJ,IAAR,KAAe;CAAC,UAAI8P,OAAO,GAAClS,EAAE,CAACmS,SAAH,CAAatG,MAAb,CAAZ;;CAAiC,UAAGqG,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,EAA0BrG,MAA1B,CAAN;CAAwC;;CAAA,UAAIiG,IAAI,GAAC9R,EAAE,CAAC4R,QAAH,CAAY/F,MAAM,CAAC1K,EAAnB,EAAsBiB,IAAtB,CAAT;;CAAqC,WAAI,IAAItN,IAAI,GAACkL,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,CAAb,EAAgChd,IAAhC,EAAqCA,IAAI,GAACA,IAAI,CAACkd,SAA/C,EAAyD;CAAC,YAAII,QAAQ,GAACtd,IAAI,CAACsN,IAAlB;;CAAuB,YAAGtN,IAAI,CAAC+W,MAAL,CAAY1K,EAAZ,KAAiB0K,MAAM,CAAC1K,EAAxB,IAA4BiR,QAAQ,KAAGhQ,IAA1C,EAA+C;CAAC,iBAAOtN,IAAP;CAAY;CAAC;;CAAA,aAAOkL,EAAE,CAACoM,MAAH,CAAUP,MAAV,EAAiBzJ,IAAjB,CAAP;CAA8B,KAAnuE;CAAouEwJ,IAAAA,UAAU,EAAC,CAACC,MAAD,EAAQzJ,IAAR,EAAa0J,IAAb,EAAkBxC,IAAlB,KAAyB;CAAC/S,MAAAA,MAAM,CAAC,OAAOsV,MAAP,IAAe,QAAhB,CAAN;CAAgC,UAAI/W,IAAI,GAAC,IAAIkL,EAAE,CAACqS,MAAP,CAAcxG,MAAd,EAAqBzJ,IAArB,EAA0B0J,IAA1B,EAA+BxC,IAA/B,CAAT;CAA8CtJ,MAAAA,EAAE,CAAC+R,WAAH,CAAejd,IAAf;CAAqB,aAAOA,IAAP;CAAY,KAAx3E;CAAy3Ewd,IAAAA,WAAW,EAACxd,IAAI,IAAE;CAACkL,MAAAA,EAAE,CAACiS,cAAH,CAAkBnd,IAAlB;CAAwB,KAAp6E;CAAq6E4c,IAAAA,MAAM,EAAC5c,IAAI,IAAE;CAAC,aAAOA,IAAI,KAAGA,IAAI,CAAC+W,MAAnB;CAA0B,KAA78E;CAA88EwF,IAAAA,YAAY,EAACvc,IAAI,IAAE;CAAC,aAAM,CAAC,CAACA,IAAI,CAACwc,OAAb;CAAqB,KAAv/E;CAAw/EjE,IAAAA,MAAM,EAACvB,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,KAArB;CAA2B,KAAjiF;CAAkiFqB,IAAAA,KAAK,EAACrB,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,KAArB;CAA2B,KAA1kF;CAA2kFyB,IAAAA,MAAM,EAACzB,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,KAArB;CAA2B,KAApnF;CAAqnF0B,IAAAA,QAAQ,EAAC1B,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,IAArB;CAA0B,KAA/pF;CAAgqFC,IAAAA,QAAQ,EAACD,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,KAArB;CAA2B,KAA3sF;CAA4sFE,IAAAA,MAAM,EAACF,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,IAArB;CAA0B,KAApvF;CAAqvFyG,IAAAA,QAAQ,EAACzG,IAAI,IAAE;CAAC,aAAM,CAACA,IAAI,GAAC,KAAN,MAAe,KAArB;CAA2B,KAAhyF;CAAiyF0G,IAAAA,SAAS,EAAC;CAAC,WAAI,CAAL;CAAO,YAAK,CAAZ;CAAc,WAAI,GAAlB;CAAsB,YAAK,GAA3B;CAA+B,WAAI,IAAnC;CAAwC,YAAK;CAA7C,KAA3yF;CAA81FC,IAAAA,iBAAiB,EAACxX,GAAG,IAAE;CAAC,UAAI0U,KAAK,GAAC3P,EAAE,CAACwS,SAAH,CAAavX,GAAb,CAAV;;CAA4B,UAAG,OAAO0U,KAAP,IAAc,WAAjB,EAA6B;CAAC,cAAM,IAAI3a,KAAJ,CAAU,6BAA2BiG,GAArC,CAAN;CAAgD;;CAAA,aAAO0U,KAAP;CAAa,KAA7+F;CAA8+F+C,IAAAA,uBAAuB,EAACC,IAAI,IAAE;CAAC,UAAIC,KAAK,GAAC,CAAC,GAAD,EAAK,GAAL,EAAS,IAAT,EAAeD,IAAI,GAAC,CAApB,CAAV;;CAAiC,UAAGA,IAAI,GAAC,GAAR,EAAY;CAACC,QAAAA,KAAK,IAAE,GAAP;CAAW;;CAAA,aAAOA,KAAP;CAAa,KAAnlG;CAAolGC,IAAAA,eAAe,EAAC,CAAC/d,IAAD,EAAM8d,KAAN,KAAc;CAAC,UAAG5S,EAAE,CAACG,iBAAN,EAAwB;CAAC,eAAO,CAAP;CAAS;;CAAA,UAAGyS,KAAK,CAACjI,QAAN,CAAe,GAAf,KAAqB,EAAE7V,IAAI,CAACgX,IAAL,GAAU,GAAZ,CAAxB,EAAyC;CAAC,eAAO,CAAP;CAAS,OAAnD,MAAwD,IAAG8G,KAAK,CAACjI,QAAN,CAAe,GAAf,KAAqB,EAAE7V,IAAI,CAACgX,IAAL,GAAU,GAAZ,CAAxB,EAAyC;CAAC,eAAO,CAAP;CAAS,OAAnD,MAAwD,IAAG8G,KAAK,CAACjI,QAAN,CAAe,GAAf,KAAqB,EAAE7V,IAAI,CAACgX,IAAL,GAAU,EAAZ,CAAxB,EAAwC;CAAC,eAAO,CAAP;CAAS;;CAAA,aAAO,CAAP;CAAS,KAAh0G;CAAi0GqG,IAAAA,SAAS,EAAC3L,GAAG,IAAE;CAAC,UAAI0L,OAAO,GAAClS,EAAE,CAAC6S,eAAH,CAAmBrM,GAAnB,EAAuB,GAAvB,CAAZ;CAAwC,UAAG0L,OAAH,EAAW,OAAOA,OAAP;CAAe,UAAG,CAAC1L,GAAG,CAAC0F,QAAJ,CAAaE,MAAjB,EAAwB,OAAO,CAAP;CAAS,aAAO,CAAP;CAAS,KAA77G;CAA87G0G,IAAAA,SAAS,EAAC,CAACtM,GAAD,EAAKpE,IAAL,KAAY;CAAC,UAAG;CAAC,YAAItN,IAAI,GAACkL,EAAE,CAACgP,UAAH,CAAcxI,GAAd,EAAkBpE,IAAlB,CAAT;CAAiC,eAAO,EAAP;CAAU,OAA/C,CAA+C,OAAMP,CAAN,EAAQ;;CAAE,aAAO7B,EAAE,CAAC6S,eAAH,CAAmBrM,GAAnB,EAAuB,IAAvB,CAAP;CAAoC,KAAljH;CAAmjHuM,IAAAA,SAAS,EAAC,CAACvM,GAAD,EAAKpE,IAAL,EAAU4Q,KAAV,KAAkB;CAAC,UAAIle,IAAJ;;CAAS,UAAG;CAACA,QAAAA,IAAI,GAACkL,EAAE,CAACgP,UAAH,CAAcxI,GAAd,EAAkBpE,IAAlB,CAAL;CAA6B,OAAjC,CAAiC,OAAMP,CAAN,EAAQ;CAAC,eAAOA,CAAC,CAACoR,KAAT;CAAe;;CAAA,UAAIf,OAAO,GAAClS,EAAE,CAAC6S,eAAH,CAAmBrM,GAAnB,EAAuB,IAAvB,CAAZ;;CAAyC,UAAG0L,OAAH,EAAW;CAAC,eAAOA,OAAP;CAAe;;CAAA,UAAGc,KAAH,EAAS;CAAC,YAAG,CAAChT,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAJ,EAAwB;CAAC,iBAAO,EAAP;CAAU;;CAAA,YAAG9L,EAAE,CAAC0R,MAAH,CAAU5c,IAAV,KAAiBkL,EAAE,CAACyR,OAAH,CAAW3c,IAAX,MAAmBkL,EAAE,CAAC0H,GAAH,EAAvC,EAAgD;CAAC,iBAAO,EAAP;CAAU;CAAC,OAAzG,MAA6G;CAAC,YAAG1H,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAH,EAAuB;CAAC,iBAAO,EAAP;CAAU;CAAC;;CAAA,aAAO,CAAP;CAAS,KAAh3H;CAAi3HoH,IAAAA,OAAO,EAAC,CAACpe,IAAD,EAAM6a,KAAN,KAAc;CAAC,UAAG,CAAC7a,IAAJ,EAAS;CAAC,eAAO,EAAP;CAAU;;CAAA,UAAGkL,EAAE,CAACuN,MAAH,CAAUzY,IAAI,CAACgX,IAAf,CAAH,EAAwB;CAAC,eAAO,EAAP;CAAU,OAAnC,MAAwC,IAAG9L,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAH,EAAuB;CAAC,YAAG9L,EAAE,CAAC0S,uBAAH,CAA2B/C,KAA3B,MAAoC,GAApC,IAAyCA,KAAK,GAAC,GAAlD,EAAsD;CAAC,iBAAO,EAAP;CAAU;CAAC;;CAAA,aAAO3P,EAAE,CAAC6S,eAAH,CAAmB/d,IAAnB,EAAwBkL,EAAE,CAAC0S,uBAAH,CAA2B/C,KAA3B,CAAxB,CAAP;CAAkE,KAAhmI;CAAimIwD,IAAAA,YAAY,EAAC,IAA9mI;CAAmnIC,IAAAA,MAAM,EAAC,YAAqC;CAAA,UAApCC,QAAoC,uEAA3B,CAA2B;CAAA,UAAzBC,MAAyB,uEAAlBtT,EAAE,CAACmT,YAAe;;CAAC,WAAI,IAAIzI,EAAE,GAAC2I,QAAX,EAAoB3I,EAAE,IAAE4I,MAAxB,EAA+B5I,EAAE,EAAjC,EAAoC;CAAC,YAAG,CAAC1K,EAAE,CAACuQ,OAAH,CAAW7F,EAAX,CAAJ,EAAmB;CAAC,iBAAOA,EAAP;CAAU;CAAC;;CAAA,YAAM,IAAI1K,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B,KAAhwI;CAAiwIgK,IAAAA,SAAS,EAAC7I,EAAE,IAAE1K,EAAE,CAACuQ,OAAH,CAAW7F,EAAX,CAA/wI;CAA8xI8I,IAAAA,YAAY,EAAC,CAACpK,MAAD,EAAQiK,QAAR,EAAiBC,MAAjB,KAA0B;CAAC,UAAG,CAACtT,EAAE,CAACyT,QAAP,EAAgB;CAACzT,QAAAA,EAAE,CAACyT,QAAH,GAAY,YAAU;CAAC,eAAKC,MAAL,GAAY,EAAZ;CAAe,SAAtC;;CAAuC1T,QAAAA,EAAE,CAACyT,QAAH,CAAY7U,SAAZ,GAAsB;CAAC+U,UAAAA,MAAM,EAAC;CAACla,YAAAA,GAAG,EAAC,YAAU;CAAC,qBAAO,KAAK3E,IAAZ;CAAiB,aAAjC;CAAkC+J,YAAAA,GAAG,EAAC,UAASkM,GAAT,EAAa;CAAC,mBAAKjW,IAAL,GAAUiW,GAAV;CAAc;CAAlE,WAAR;CAA4E6I,UAAAA,MAAM,EAAC;CAACna,YAAAA,GAAG,EAAC,YAAU;CAAC,qBAAM,CAAC,KAAKkW,KAAL,GAAW,OAAZ,MAAuB,CAA7B;CAA+B;CAA/C,WAAnF;CAAoIkE,UAAAA,OAAO,EAAC;CAACpa,YAAAA,GAAG,EAAC,YAAU;CAAC,qBAAM,CAAC,KAAKkW,KAAL,GAAW,OAAZ,MAAuB,CAA7B;CAA+B;CAA/C,WAA5I;CAA6LmE,UAAAA,QAAQ,EAAC;CAACra,YAAAA,GAAG,EAAC,YAAU;CAAC,qBAAO,KAAKkW,KAAL,GAAW,IAAlB;CAAuB;CAAvC,WAAtM;CAA+OA,UAAAA,KAAK,EAAC;CAAClW,YAAAA,GAAG,EAAC,YAAU;CAAC,qBAAO,KAAKia,MAAL,CAAY/D,KAAnB;CAAyB,aAAzC;CAA0C9Q,YAAAA,GAAG,EAAC,UAASkM,GAAT,EAAa;CAAC,mBAAK2I,MAAL,CAAY/D,KAAZ,GAAkB5E,GAAlB;CAAsB;CAAlF,WAArP;CAAyUuE,UAAAA,QAAQ,EAAC;CAAC,gBAAIyE,QAAJ,GAAc;CAAC,qBAAO,KAAKL,MAAL,CAAYpE,QAAnB;CAA4B,aAA5C;;CAA6CzQ,YAAAA,GAAG,EAAC,UAASkM,GAAT,EAAa;CAAC,mBAAK2I,MAAL,CAAYpE,QAAZ,GAAqBvE,GAArB;CAAyB;CAAxF;CAAlV,SAAtB;CAAmc;;CAAA3B,MAAAA,MAAM,GAAChV,MAAM,CAACC,MAAP,CAAc,IAAI2L,EAAE,CAACyT,QAAP,EAAd,EAA8BrK,MAA9B,CAAP;CAA6C,UAAIsB,EAAE,GAAC1K,EAAE,CAACoT,MAAH,CAAUC,QAAV,EAAmBC,MAAnB,CAAP;CAAkClK,MAAAA,MAAM,CAACsB,EAAP,GAAUA,EAAV;CAAa1K,MAAAA,EAAE,CAACuQ,OAAH,CAAW7F,EAAX,IAAetB,MAAf;CAAsB,aAAOA,MAAP;CAAc,KAAj8J;CAAk8J4K,IAAAA,WAAW,EAACtJ,EAAE,IAAE;CAAC1K,MAAAA,EAAE,CAACuQ,OAAH,CAAW7F,EAAX,IAAe,IAAf;CAAoB,KAAv+J;CAAw+JwC,IAAAA,iBAAiB,EAAC;CAAC3U,MAAAA,IAAI,EAAC6Q,MAAM,IAAE;CAAC,YAAI6K,MAAM,GAACjU,EAAE,CAACkU,SAAH,CAAa9K,MAAM,CAACtU,IAAP,CAAYwU,IAAzB,CAAX;CAA0CF,QAAAA,MAAM,CAACD,UAAP,GAAkB8K,MAAM,CAAC9K,UAAzB;;CAAoC,YAAGC,MAAM,CAACD,UAAP,CAAkB5Q,IAArB,EAA0B;CAAC6Q,UAAAA,MAAM,CAACD,UAAP,CAAkB5Q,IAAlB,CAAuB6Q,MAAvB;CAA+B;CAAC,OAAxJ;CAAyJuD,MAAAA,MAAM,EAAC,MAAI;CAAC,cAAM,IAAI3M,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAjM,KAA1/J;CAA6rK4K,IAAAA,KAAK,EAACrL,GAAG,IAAEA,GAAG,IAAE,CAA7sK;CAA+sKsL,IAAAA,KAAK,EAACtL,GAAG,IAAEA,GAAG,GAAC,GAA9tK;CAAkuKuL,IAAAA,OAAO,EAAC,CAACC,EAAD,EAAIC,EAAJ,KAASD,EAAE,IAAE,CAAJ,GAAMC,EAAzvK;CAA4vKrL,IAAAA,cAAc,EAAC,CAACJ,GAAD,EAAKC,GAAL,KAAW;CAAC/I,MAAAA,EAAE,CAACsQ,OAAH,CAAWxH,GAAX,IAAgB;CAACK,QAAAA,UAAU,EAACJ;CAAZ,OAAhB;CAAiC,KAAxzK;CAAyzKmL,IAAAA,SAAS,EAACpL,GAAG,IAAE9I,EAAE,CAACsQ,OAAH,CAAWxH,GAAX,CAAx0K;CAAw1K0L,IAAAA,SAAS,EAAC7I,KAAK,IAAE;CAAC,UAAI0E,MAAM,GAAC,EAAX;CAAc,UAAIoE,KAAK,GAAC,CAAC9I,KAAD,CAAV;;CAAkB,aAAM8I,KAAK,CAAC5d,MAAZ,EAAmB;CAAC,YAAI6d,CAAC,GAACD,KAAK,CAACE,GAAN,EAAN;CAAkBtE,QAAAA,MAAM,CAAC7H,IAAP,CAAYkM,CAAZ;CAAeD,QAAAA,KAAK,CAACjM,IAAN,CAAWhG,KAAX,CAAiBiS,KAAjB,EAAuBC,CAAC,CAACrE,MAAzB;CAAiC;;CAAA,aAAOA,MAAP;CAAc,KAA9+K;CAA++KuE,IAAAA,MAAM,EAAC,CAACC,QAAD,EAAUlT,QAAV,KAAqB;CAAC,UAAG,OAAOkT,QAAP,IAAiB,UAApB,EAA+B;CAAClT,QAAAA,QAAQ,GAACkT,QAAT;CAAkBA,QAAAA,QAAQ,GAAC,KAAT;CAAe;;CAAA7U,MAAAA,EAAE,CAAC4Q,cAAH;;CAAoB,UAAG5Q,EAAE,CAAC4Q,cAAH,GAAkB,CAArB,EAAuB;CAACja,QAAAA,GAAG,CAAC,cAAYqJ,EAAE,CAAC4Q,cAAf,GAA8B,yEAA/B,CAAH;CAA6G;;CAAA,UAAIP,MAAM,GAACrQ,EAAE,CAACwU,SAAH,CAAaxU,EAAE,CAACuG,IAAH,CAAQoF,KAArB,CAAX;CAAuC,UAAImJ,SAAS,GAAC,CAAd;;CAAgB,eAASC,UAAT,CAAoB7C,OAApB,EAA4B;CAAC3b,QAAAA,MAAM,CAACyJ,EAAE,CAAC4Q,cAAH,GAAkB,CAAnB,CAAN;CAA4B5Q,QAAAA,EAAE,CAAC4Q,cAAH;CAAoB,eAAOjP,QAAQ,CAACuQ,OAAD,CAAf;CAAyB;;CAAA,eAAS8C,IAAT,CAAc9C,OAAd,EAAsB;CAAC,YAAGA,OAAH,EAAW;CAAC,cAAG,CAAC8C,IAAI,CAACC,OAAT,EAAiB;CAACD,YAAAA,IAAI,CAACC,OAAL,GAAa,IAAb;CAAkB,mBAAOF,UAAU,CAAC7C,OAAD,CAAjB;CAA2B;;CAAA;CAAO;;CAAA,YAAG,EAAE4C,SAAF,IAAazE,MAAM,CAACxZ,MAAvB,EAA8B;CAACke,UAAAA,UAAU,CAAC,IAAD,CAAV;CAAiB;CAAC;;CAAA1E,MAAAA,MAAM,CAAC6E,OAAP,CAAevJ,KAAK,IAAE;CAAC,YAAG,CAACA,KAAK,CAACwJ,IAAN,CAAWP,MAAf,EAAsB;CAAC,iBAAOI,IAAI,CAAC,IAAD,CAAX;CAAkB;;CAAArJ,QAAAA,KAAK,CAACwJ,IAAN,CAAWP,MAAX,CAAkBjJ,KAAlB,EAAwBkJ,QAAxB,EAAiCG,IAAjC;CAAuC,OAAvG;CAAyG,KAAtoM;CAAuoMrJ,IAAAA,KAAK,EAAC,CAACwJ,IAAD,EAAMrE,IAAN,EAAWa,UAAX,KAAwB;CAAC,UAAG,OAAOwD,IAAP,IAAa,QAAhB,EAAyB;CAAC,cAAMA,IAAN;CAAW;;CAAA,UAAI5O,IAAI,GAACoL,UAAU,KAAG,GAAtB;CAA0B,UAAIyD,MAAM,GAAC,CAACzD,UAAZ;CAAuB,UAAI7c,IAAJ;;CAAS,UAAGyR,IAAI,IAAEvG,EAAE,CAACuG,IAAZ,EAAiB;CAAC,cAAM,IAAIvG,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B,OAA9C,MAAmD,IAAG,CAAChD,IAAD,IAAO,CAAC6O,MAAX,EAAkB;CAAC,YAAIhJ,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAcc,UAAd,EAAyB;CAACX,UAAAA,YAAY,EAAC;CAAd,SAAzB,CAAX;CAA0DW,QAAAA,UAAU,GAACvF,MAAM,CAACjX,IAAlB;CAAuBL,QAAAA,IAAI,GAACsX,MAAM,CAACtX,IAAZ;;CAAiB,YAAGkL,EAAE,CAACqR,YAAH,CAAgBvc,IAAhB,CAAH,EAAyB;CAAC,gBAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,YAAG,CAACvJ,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAJ,EAAwB;CAAC,gBAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAC;;CAAA,UAAIoC,KAAK,GAAC;CAACwJ,QAAAA,IAAI,EAACA,IAAN;CAAWrE,QAAAA,IAAI,EAACA,IAAhB;CAAqBa,QAAAA,UAAU,EAACA,UAAhC;CAA2CtB,QAAAA,MAAM,EAAC;CAAlD,OAAV;CAAgE,UAAIgF,SAAS,GAACF,IAAI,CAACxJ,KAAL,CAAWA,KAAX,CAAd;CAAgC0J,MAAAA,SAAS,CAAC1J,KAAV,GAAgBA,KAAhB;CAAsBA,MAAAA,KAAK,CAACpF,IAAN,GAAW8O,SAAX;;CAAqB,UAAG9O,IAAH,EAAQ;CAACvG,QAAAA,EAAE,CAACuG,IAAH,GAAQ8O,SAAR;CAAkB,OAA3B,MAAgC,IAAGvgB,IAAH,EAAQ;CAACA,QAAAA,IAAI,CAACwc,OAAL,GAAa3F,KAAb;;CAAmB,YAAG7W,IAAI,CAAC6W,KAAR,EAAc;CAAC7W,UAAAA,IAAI,CAAC6W,KAAL,CAAW0E,MAAX,CAAkB7H,IAAlB,CAAuBmD,KAAvB;CAA8B;CAAC;;CAAA,aAAO0J,SAAP;CAAiB,KAA/xN;CAAgyNC,IAAAA,OAAO,EAAC3D,UAAU,IAAE;CAAC,UAAIvF,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAcc,UAAd,EAAyB;CAACX,QAAAA,YAAY,EAAC;CAAd,OAAzB,CAAX;;CAA0D,UAAG,CAAChR,EAAE,CAACqR,YAAH,CAAgBjF,MAAM,CAACtX,IAAvB,CAAJ,EAAiC;CAAC,cAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIzU,IAAI,GAACsX,MAAM,CAACtX,IAAhB;CAAqB,UAAI6W,KAAK,GAAC7W,IAAI,CAACwc,OAAf;CAAuB,UAAIjB,MAAM,GAACrQ,EAAE,CAACwU,SAAH,CAAa7I,KAAb,CAAX;CAA+BvX,MAAAA,MAAM,CAACmhB,IAAP,CAAYvV,EAAE,CAACyQ,SAAf,EAA0ByE,OAA1B,CAAkCpD,IAAI,IAAE;CAAC,YAAIZ,OAAO,GAAClR,EAAE,CAACyQ,SAAH,CAAaqB,IAAb,CAAZ;;CAA+B,eAAMZ,OAAN,EAAc;CAAC,cAAIsE,IAAI,GAACtE,OAAO,CAACc,SAAjB;;CAA2B,cAAG3B,MAAM,CAAC1F,QAAP,CAAgBuG,OAAO,CAACvF,KAAxB,CAAH,EAAkC;CAAC3L,YAAAA,EAAE,CAACsS,WAAH,CAAepB,OAAf;CAAwB;;CAAAA,UAAAA,OAAO,GAACsE,IAAR;CAAa;CAAC,OAA3L;CAA6L1gB,MAAAA,IAAI,CAACwc,OAAL,GAAa,IAAb;CAAkB,UAAI3W,GAAG,GAAC7F,IAAI,CAAC6W,KAAL,CAAW0E,MAAX,CAAkBpY,OAAlB,CAA0B0T,KAA1B,CAAR;CAAyCpV,MAAAA,MAAM,CAACoE,GAAG,KAAG,CAAC,CAAR,CAAN;CAAiB7F,MAAAA,IAAI,CAAC6W,KAAL,CAAW0E,MAAX,CAAkBtK,MAAlB,CAAyBpL,GAAzB,EAA6B,CAA7B;CAAgC,KAAjyO;CAAkyOyR,IAAAA,MAAM,EAAC,CAACP,MAAD,EAAQzJ,IAAR,KAAe;CAAC,aAAOyJ,MAAM,CAACK,QAAP,CAAgBE,MAAhB,CAAuBP,MAAvB,EAA8BzJ,IAA9B,CAAP;CAA2C,KAAp2O;CAAq2OiK,IAAAA,KAAK,EAAC,CAAClX,IAAD,EAAM2W,IAAN,EAAWhD,GAAX,KAAiB;CAAC,UAAIsD,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAAC0W,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;CAA6C,UAAIA,MAAM,GAACO,MAAM,CAACtX,IAAlB;CAAuB,UAAIsN,IAAI,GAACgD,IAAI,CAACqB,QAAL,CAActR,IAAd,CAAT;;CAA6B,UAAG,CAACiN,IAAD,IAAOA,IAAI,KAAG,GAAd,IAAmBA,IAAI,KAAG,IAA7B,EAAkC;CAAC,cAAM,IAAIpC,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAI2I,OAAO,GAAClS,EAAE,CAAC8S,SAAH,CAAajH,MAAb,EAAoBzJ,IAApB,CAAZ;;CAAsC,UAAG8P,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAA,UAAG,CAACrG,MAAM,CAACK,QAAP,CAAgBG,KAApB,EAA0B;CAAC,cAAM,IAAIrM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOsC,MAAM,CAACK,QAAP,CAAgBG,KAAhB,CAAsBR,MAAtB,EAA6BzJ,IAA7B,EAAkC0J,IAAlC,EAAuChD,GAAvC,CAAP;CAAmD,KAA1tP;CAA2tP2M,IAAAA,MAAM,EAAC,CAACtgB,IAAD,EAAM2W,IAAN,KAAa;CAACA,MAAAA,IAAI,GAACA,IAAI,KAAG3V,SAAP,GAAiB2V,IAAjB,GAAsB,GAA3B;CAA+BA,MAAAA,IAAI,IAAE,IAAN;CAAWA,MAAAA,IAAI,IAAE,KAAN;CAAY,aAAO9L,EAAE,CAACqM,KAAH,CAASlX,IAAT,EAAc2W,IAAd,EAAmB,CAAnB,CAAP;CAA6B,KAAn0P;CAAo0P4J,IAAAA,KAAK,EAAC,CAACvgB,IAAD,EAAM2W,IAAN,KAAa;CAACA,MAAAA,IAAI,GAACA,IAAI,KAAG3V,SAAP,GAAiB2V,IAAjB,GAAsB,GAA3B;CAA+BA,MAAAA,IAAI,IAAE,MAAI,GAAV;CAAcA,MAAAA,IAAI,IAAE,KAAN;CAAY,aAAO9L,EAAE,CAACqM,KAAH,CAASlX,IAAT,EAAc2W,IAAd,EAAmB,CAAnB,CAAP;CAA6B,KAA96P;CAA+6P6J,IAAAA,SAAS,EAAC,CAACxgB,IAAD,EAAM2W,IAAN,KAAa;CAAC,UAAI8J,IAAI,GAACzgB,IAAI,CAACgR,KAAL,CAAW,GAAX,CAAT;CAAyB,UAAI0P,CAAC,GAAC,EAAN;;CAAS,WAAI,IAAI5Z,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC2Z,IAAI,CAAC/e,MAAnB,EAA0B,EAAEoF,CAA5B,EAA8B;CAAC,YAAG,CAAC2Z,IAAI,CAAC3Z,CAAD,CAAR,EAAY;CAAS4Z,QAAAA,CAAC,IAAE,MAAID,IAAI,CAAC3Z,CAAD,CAAX;;CAAe,YAAG;CAAC+D,UAAAA,EAAE,CAAC0V,KAAH,CAASG,CAAT,EAAW/J,IAAX;CAAiB,SAArB,CAAqB,OAAMjK,CAAN,EAAQ;CAAC,cAAGA,CAAC,CAACoR,KAAF,IAAS,EAAZ,EAAe,MAAMpR,CAAN;CAAQ;CAAC;CAAC,KAAnmQ;CAAomQiU,IAAAA,KAAK,EAAC,CAAC3gB,IAAD,EAAM2W,IAAN,EAAWhD,GAAX,KAAiB;CAAC,UAAG,OAAOA,GAAP,IAAY,WAAf,EAA2B;CAACA,QAAAA,GAAG,GAACgD,IAAJ;CAASA,QAAAA,IAAI,GAAC,GAAL;CAAS;;CAAAA,MAAAA,IAAI,IAAE,IAAN;CAAW,aAAO9L,EAAE,CAACqM,KAAH,CAASlX,IAAT,EAAc2W,IAAd,EAAmBhD,GAAnB,CAAP;CAA+B,KAAptQ;CAAqtQ4D,IAAAA,OAAO,EAAC,CAAC2C,OAAD,EAAS0G,OAAT,KAAmB;CAAC,UAAG,CAACxO,OAAO,CAACpE,OAAR,CAAgBkM,OAAhB,CAAJ,EAA6B;CAAC,cAAM,IAAIrP,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAI6C,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAckF,OAAd,EAAsB;CAAClK,QAAAA,MAAM,EAAC;CAAR,OAAtB,CAAX;CAAgD,UAAIA,MAAM,GAACO,MAAM,CAACtX,IAAlB;;CAAuB,UAAG,CAAC+W,MAAJ,EAAW;CAAC,cAAM,IAAI7L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAI6F,OAAO,GAAChK,IAAI,CAACqB,QAAL,CAAcsP,OAAd,CAAZ;CAAmC,UAAI7D,OAAO,GAAClS,EAAE,CAAC8S,SAAH,CAAajH,MAAb,EAAoBuD,OAApB,CAAZ;;CAAyC,UAAG8C,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAA,UAAG,CAACrG,MAAM,CAACK,QAAP,CAAgBQ,OAApB,EAA4B;CAAC,cAAM,IAAI1M,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOsC,MAAM,CAACK,QAAP,CAAgBQ,OAAhB,CAAwBb,MAAxB,EAA+BuD,OAA/B,EAAuCC,OAAvC,CAAP;CAAuD,KAAnoR;CAAooR/C,IAAAA,MAAM,EAAC,CAAC0J,QAAD,EAAUC,QAAV,KAAqB;CAAC,UAAIC,WAAW,GAAC9Q,IAAI,CAACxP,OAAL,CAAaogB,QAAb,CAAhB;CAAuC,UAAIG,WAAW,GAAC/Q,IAAI,CAACxP,OAAL,CAAaqgB,QAAb,CAAhB;CAAuC,UAAIG,QAAQ,GAAChR,IAAI,CAACqB,QAAL,CAAcuP,QAAd,CAAb;CAAqC,UAAIlH,QAAQ,GAAC1J,IAAI,CAACqB,QAAL,CAAcwP,QAAd,CAAb;CAAqC,UAAI7J,MAAJ,EAAWiK,OAAX,EAAmBxH,OAAnB;CAA2BzC,MAAAA,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAcmF,QAAd,EAAuB;CAACnK,QAAAA,MAAM,EAAC;CAAR,OAAvB,CAAP;CAA6CwK,MAAAA,OAAO,GAACjK,MAAM,CAACtX,IAAf;CAAoBsX,MAAAA,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAcoF,QAAd,EAAuB;CAACpK,QAAAA,MAAM,EAAC;CAAR,OAAvB,CAAP;CAA6CgD,MAAAA,OAAO,GAACzC,MAAM,CAACtX,IAAf;CAAoB,UAAG,CAACuhB,OAAD,IAAU,CAACxH,OAAd,EAAsB,MAAM,IAAI7O,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;;CAA4B,UAAG8M,OAAO,CAAC1K,KAAR,KAAgBkD,OAAO,CAAClD,KAA3B,EAAiC;CAAC,cAAM,IAAI3L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIqF,QAAQ,GAAC5O,EAAE,CAACgP,UAAH,CAAcqH,OAAd,EAAsBD,QAAtB,CAAb;CAA6C,UAAIxO,QAAQ,GAACL,OAAO,CAACK,QAAR,CAAiBoO,QAAjB,EAA0BG,WAA1B,CAAb;;CAAoD,UAAGvO,QAAQ,CAACtC,MAAT,CAAgB,CAAhB,MAAqB,GAAxB,EAA4B;CAAC,cAAM,IAAItF,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA3B,MAAAA,QAAQ,GAACL,OAAO,CAACK,QAAR,CAAiBqO,QAAjB,EAA0BC,WAA1B,CAAT;;CAAgD,UAAGtO,QAAQ,CAACtC,MAAT,CAAgB,CAAhB,MAAqB,GAAxB,EAA4B;CAAC,cAAM,IAAItF,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIwF,QAAJ;;CAAa,UAAG;CAACA,QAAAA,QAAQ,GAAC/O,EAAE,CAACgP,UAAH,CAAcH,OAAd,EAAsBC,QAAtB,CAAT;CAAyC,OAA7C,CAA6C,OAAMjN,CAAN,EAAQ;;CAAE,UAAG+M,QAAQ,KAAGG,QAAd,EAAuB;CAAC;CAAO;;CAAA,UAAIiE,KAAK,GAAChT,EAAE,CAACmN,KAAH,CAASyB,QAAQ,CAAC9C,IAAlB,CAAV;CAAkC,UAAIoG,OAAO,GAAClS,EAAE,CAAC+S,SAAH,CAAasD,OAAb,EAAqBD,QAArB,EAA8BpD,KAA9B,CAAZ;;CAAiD,UAAGd,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAAA,MAAAA,OAAO,GAACnD,QAAQ,GAAC/O,EAAE,CAAC+S,SAAH,CAAalE,OAAb,EAAqBC,QAArB,EAA8BkE,KAA9B,CAAD,GAAsChT,EAAE,CAAC8S,SAAH,CAAajE,OAAb,EAAqBC,QAArB,CAAtD;;CAAqF,UAAGoD,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAA,UAAG,CAACmE,OAAO,CAACnK,QAAR,CAAiBI,MAArB,EAA4B;CAAC,cAAM,IAAItM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACqR,YAAH,CAAgBzC,QAAhB,KAA2BG,QAAQ,IAAE/O,EAAE,CAACqR,YAAH,CAAgBtC,QAAhB,CAAxC,EAAkE;CAAC,cAAM,IAAI/O,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGsF,OAAO,KAAGwH,OAAb,EAAqB;CAACnE,QAAAA,OAAO,GAAClS,EAAE,CAAC6S,eAAH,CAAmBwD,OAAnB,EAA2B,GAA3B,CAAR;;CAAwC,YAAGnE,OAAH,EAAW;CAAC,gBAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;CAAC;;CAAAlS,MAAAA,EAAE,CAACiS,cAAH,CAAkBrD,QAAlB;;CAA4B,UAAG;CAACyH,QAAAA,OAAO,CAACnK,QAAR,CAAiBI,MAAjB,CAAwBsC,QAAxB,EAAiCC,OAAjC,EAAyCC,QAAzC;CAAmD,OAAvD,CAAuD,OAAMjN,CAAN,EAAQ;CAAC,cAAMA,CAAN;CAAQ,OAAxE,SAA+E;CAAC7B,QAAAA,EAAE,CAAC+R,WAAH,CAAenD,QAAf;CAAyB;CAAC,KAAxjU;CAAyjUpC,IAAAA,KAAK,EAACrX,IAAI,IAAE;CAAC,UAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAAC0W,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;CAA6C,UAAIA,MAAM,GAACO,MAAM,CAACtX,IAAlB;CAAuB,UAAIsN,IAAI,GAACgD,IAAI,CAACqB,QAAL,CAActR,IAAd,CAAT;CAA6B,UAAIL,IAAI,GAACkL,EAAE,CAACgP,UAAH,CAAcnD,MAAd,EAAqBzJ,IAArB,CAAT;CAAoC,UAAI8P,OAAO,GAAClS,EAAE,CAAC+S,SAAH,CAAalH,MAAb,EAAoBzJ,IAApB,EAAyB,IAAzB,CAAZ;;CAA2C,UAAG8P,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAA,UAAG,CAACrG,MAAM,CAACK,QAAP,CAAgBM,KAApB,EAA0B;CAAC,cAAM,IAAIxM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACqR,YAAH,CAAgBvc,IAAhB,CAAH,EAAyB;CAAC,cAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAsC,MAAAA,MAAM,CAACK,QAAP,CAAgBM,KAAhB,CAAsBX,MAAtB,EAA6BzJ,IAA7B;CAAmCpC,MAAAA,EAAE,CAACsS,WAAH,CAAexd,IAAf;CAAqB,KAAx8U;CAAy8U2X,IAAAA,OAAO,EAACtX,IAAI,IAAE;CAAC,UAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;CAA6C,UAAIzc,IAAI,GAACsX,MAAM,CAACtX,IAAhB;;CAAqB,UAAG,CAACA,IAAI,CAACoX,QAAL,CAAcO,OAAlB,EAA0B;CAAC,cAAM,IAAIzM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOzU,IAAI,CAACoX,QAAL,CAAcO,OAAd,CAAsB3X,IAAtB,CAAP;CAAmC,KAApnV;CAAqnVyX,IAAAA,MAAM,EAACpX,IAAI,IAAE;CAAC,UAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAAC0W,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;CAA6C,UAAIA,MAAM,GAACO,MAAM,CAACtX,IAAlB;;CAAuB,UAAG,CAAC+W,MAAJ,EAAW;CAAC,cAAM,IAAI7L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAInH,IAAI,GAACgD,IAAI,CAACqB,QAAL,CAActR,IAAd,CAAT;CAA6B,UAAIL,IAAI,GAACkL,EAAE,CAACgP,UAAH,CAAcnD,MAAd,EAAqBzJ,IAArB,CAAT;CAAoC,UAAI8P,OAAO,GAAClS,EAAE,CAAC+S,SAAH,CAAalH,MAAb,EAAoBzJ,IAApB,EAAyB,KAAzB,CAAZ;;CAA4C,UAAG8P,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAA,UAAG,CAACrG,MAAM,CAACK,QAAP,CAAgBK,MAApB,EAA2B;CAAC,cAAM,IAAIvM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACqR,YAAH,CAAgBvc,IAAhB,CAAH,EAAyB;CAAC,cAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAsC,MAAAA,MAAM,CAACK,QAAP,CAAgBK,MAAhB,CAAuBV,MAAvB,EAA8BzJ,IAA9B;CAAoCpC,MAAAA,EAAE,CAACsS,WAAH,CAAexd,IAAf;CAAqB,KAAhjW;CAAijWkY,IAAAA,QAAQ,EAAC7X,IAAI,IAAE;CAAC,UAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,CAAX;CAA+B,UAAI4X,IAAI,GAACX,MAAM,CAACtX,IAAhB;;CAAqB,UAAG,CAACiY,IAAJ,EAAS;CAAC,cAAM,IAAI/M,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACwD,IAAI,CAACb,QAAL,CAAcc,QAAlB,EAA2B;CAAC,cAAM,IAAIhN,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOhC,OAAO,CAACpE,OAAR,CAAgBnD,EAAE,CAACyR,OAAH,CAAW1E,IAAI,CAAClB,MAAhB,CAAhB,EAAwCkB,IAAI,CAACb,QAAL,CAAcc,QAAd,CAAuBD,IAAvB,CAAxC,CAAP;CAA6E,KAAhyW;CAAiyWuJ,IAAAA,IAAI,EAAC,CAACnhB,IAAD,EAAMohB,UAAN,KAAmB;CAAC,UAAInK,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,QAAAA,MAAM,EAAC,CAACgF;CAAT,OAAnB,CAAX;CAAoD,UAAIzhB,IAAI,GAACsX,MAAM,CAACtX,IAAhB;;CAAqB,UAAG,CAACA,IAAJ,EAAS;CAAC,cAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACzU,IAAI,CAACoX,QAAL,CAAcD,OAAlB,EAA0B;CAAC,cAAM,IAAIjM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOzU,IAAI,CAACoX,QAAL,CAAcD,OAAd,CAAsBnX,IAAtB,CAAP;CAAmC,KAAngX;CAAogX0hB,IAAAA,KAAK,EAACrhB,IAAI,IAAE;CAAC,aAAO6K,EAAE,CAACsW,IAAH,CAAQnhB,IAAR,EAAa,IAAb,CAAP;CAA0B,KAA3iX;CAA4iXshB,IAAAA,KAAK,EAAC,CAACthB,IAAD,EAAM2W,IAAN,EAAWyK,UAAX,KAAwB;CAAC,UAAIzhB,IAAJ;;CAAS,UAAG,OAAOK,IAAP,IAAa,QAAhB,EAAyB;CAAC,YAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,UAAAA,MAAM,EAAC,CAACgF;CAAT,SAAnB,CAAX;CAAoDzhB,QAAAA,IAAI,GAACsX,MAAM,CAACtX,IAAZ;CAAiB,OAA/F,MAAmG;CAACA,QAAAA,IAAI,GAACK,IAAL;CAAU;;CAAA,UAAG,CAACL,IAAI,CAACoX,QAAL,CAAcC,OAAlB,EAA0B;CAAC,cAAM,IAAInM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAzU,MAAAA,IAAI,CAACoX,QAAL,CAAcC,OAAd,CAAsBrX,IAAtB,EAA2B;CAACgX,QAAAA,IAAI,EAACA,IAAI,GAAC,IAAL,GAAUhX,IAAI,CAACgX,IAAL,GAAU,CAAC,IAA3B;CAAgC/B,QAAAA,SAAS,EAACC,IAAI,CAACC,GAAL;CAA1C,OAA3B;CAAkF,KAA30X;CAA40XyM,IAAAA,MAAM,EAAC,CAACvhB,IAAD,EAAM2W,IAAN,KAAa;CAAC9L,MAAAA,EAAE,CAACyW,KAAH,CAASthB,IAAT,EAAc2W,IAAd,EAAmB,IAAnB;CAAyB,KAA13X;CAA23X6K,IAAAA,MAAM,EAAC,CAACjM,EAAD,EAAIoB,IAAJ,KAAW;CAAC,UAAI1C,MAAM,GAACpJ,EAAE,CAACuT,SAAH,CAAa7I,EAAb,CAAX;;CAA4B,UAAG,CAACtB,MAAJ,EAAW;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAAvJ,MAAAA,EAAE,CAACyW,KAAH,CAASrN,MAAM,CAACtU,IAAhB,EAAqBgX,IAArB;CAA2B,KAA5+X;CAA6+X8K,IAAAA,KAAK,EAAC,CAACzhB,IAAD,EAAMiZ,GAAN,EAAUC,GAAV,EAAckI,UAAd,KAA2B;CAAC,UAAIzhB,IAAJ;;CAAS,UAAG,OAAOK,IAAP,IAAa,QAAhB,EAAyB;CAAC,YAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,UAAAA,MAAM,EAAC,CAACgF;CAAT,SAAnB,CAAX;CAAoDzhB,QAAAA,IAAI,GAACsX,MAAM,CAACtX,IAAZ;CAAiB,OAA/F,MAAmG;CAACA,QAAAA,IAAI,GAACK,IAAL;CAAU;;CAAA,UAAG,CAACL,IAAI,CAACoX,QAAL,CAAcC,OAAlB,EAA0B;CAAC,cAAM,IAAInM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAzU,MAAAA,IAAI,CAACoX,QAAL,CAAcC,OAAd,CAAsBrX,IAAtB,EAA2B;CAACiV,QAAAA,SAAS,EAACC,IAAI,CAACC,GAAL;CAAX,OAA3B;CAAmD,KAAhvY;CAAivY4M,IAAAA,MAAM,EAAC,CAAC1hB,IAAD,EAAMiZ,GAAN,EAAUC,GAAV,KAAgB;CAACrO,MAAAA,EAAE,CAAC4W,KAAH,CAASzhB,IAAT,EAAciZ,GAAd,EAAkBC,GAAlB,EAAsB,IAAtB;CAA4B,KAAryY;CAAsyYyI,IAAAA,MAAM,EAAC,CAACpM,EAAD,EAAI0D,GAAJ,EAAQC,GAAR,KAAc;CAAC,UAAIjF,MAAM,GAACpJ,EAAE,CAACuT,SAAH,CAAa7I,EAAb,CAAX;;CAA4B,UAAG,CAACtB,MAAJ,EAAW;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAAvJ,MAAAA,EAAE,CAAC4W,KAAH,CAASxN,MAAM,CAACtU,IAAhB,EAAqBsZ,GAArB,EAAyBC,GAAzB;CAA8B,KAA75Y;CAA85Y0I,IAAAA,QAAQ,EAAC,CAAC5hB,IAAD,EAAMoH,GAAN,KAAY;CAAC,UAAGA,GAAG,GAAC,CAAP,EAAS;CAAC,cAAM,IAAIyD,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIzU,IAAJ;;CAAS,UAAG,OAAOK,IAAP,IAAa,QAAhB,EAAyB;CAAC,YAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,UAAAA,MAAM,EAAC;CAAR,SAAnB,CAAX;CAA6Czc,QAAAA,IAAI,GAACsX,MAAM,CAACtX,IAAZ;CAAiB,OAAxF,MAA4F;CAACA,QAAAA,IAAI,GAACK,IAAL;CAAU;;CAAA,UAAG,CAACL,IAAI,CAACoX,QAAL,CAAcC,OAAlB,EAA0B;CAAC,cAAM,IAAInM,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAH,EAAuB;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACvJ,EAAE,CAACqN,MAAH,CAAUvY,IAAI,CAACgX,IAAf,CAAJ,EAAyB;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAI2I,OAAO,GAAClS,EAAE,CAAC6S,eAAH,CAAmB/d,IAAnB,EAAwB,GAAxB,CAAZ;;CAAyC,UAAGod,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAApd,MAAAA,IAAI,CAACoX,QAAL,CAAcC,OAAd,CAAsBrX,IAAtB,EAA2B;CAAC2I,QAAAA,IAAI,EAAClB,GAAN;CAAUwN,QAAAA,SAAS,EAACC,IAAI,CAACC,GAAL;CAApB,OAA3B;CAA4D,KAA73Z;CAA83Z+M,IAAAA,SAAS,EAAC,CAACtM,EAAD,EAAInO,GAAJ,KAAU;CAAC,UAAI6M,MAAM,GAACpJ,EAAE,CAACuT,SAAH,CAAa7I,EAAb,CAAX;;CAA4B,UAAG,CAACtB,MAAJ,EAAW;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACH,MAAM,CAACuG,KAAP,GAAa,OAAd,MAAyB,CAA5B,EAA8B;CAAC,cAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAvJ,MAAAA,EAAE,CAAC+W,QAAH,CAAY3N,MAAM,CAACtU,IAAnB,EAAwByH,GAAxB;CAA6B,KAA9ia;CAA+ia0a,IAAAA,KAAK,EAAC,CAAC9hB,IAAD,EAAMmZ,KAAN,EAAYC,KAAZ,KAAoB;CAAC,UAAInC,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;CAA6C,UAAIzc,IAAI,GAACsX,MAAM,CAACtX,IAAhB;CAAqBA,MAAAA,IAAI,CAACoX,QAAL,CAAcC,OAAd,CAAsBrX,IAAtB,EAA2B;CAACiV,QAAAA,SAAS,EAACtJ,IAAI,CAACzB,GAAL,CAASsP,KAAT,EAAeC,KAAf;CAAX,OAA3B;CAA8D,KAA1sa;CAA2sahW,IAAAA,IAAI,EAAC,CAACpD,IAAD,EAAMwa,KAAN,EAAY7D,IAAZ,EAAiBuH,QAAjB,EAA0BC,MAA1B,KAAmC;CAAC,UAAGne,IAAI,KAAG,EAAV,EAAa;CAAC,cAAM,IAAI6K,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAoG,MAAAA,KAAK,GAAC,OAAOA,KAAP,IAAc,QAAd,GAAuB3P,EAAE,CAACyS,iBAAH,CAAqB9C,KAArB,CAAvB,GAAmDA,KAAzD;CAA+D7D,MAAAA,IAAI,GAAC,OAAOA,IAAP,IAAa,WAAb,GAAyB,GAAzB,GAA6BA,IAAlC;;CAAuC,UAAG6D,KAAK,GAAC,EAAT,EAAY;CAAC7D,QAAAA,IAAI,GAACA,IAAI,GAAC,IAAL,GAAU,KAAf;CAAqB,OAAlC,MAAsC;CAACA,QAAAA,IAAI,GAAC,CAAL;CAAO;;CAAA,UAAIhX,IAAJ;;CAAS,UAAG,OAAOK,IAAP,IAAa,QAAhB,EAAyB;CAACL,QAAAA,IAAI,GAACK,IAAL;CAAU,OAApC,MAAwC;CAACA,QAAAA,IAAI,GAACiQ,IAAI,CAACY,SAAL,CAAe7Q,IAAf,CAAL;;CAA0B,YAAG;CAAC,cAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,YAAAA,MAAM,EAAC,EAAE5B,KAAK,GAAC,MAAR;CAAR,WAAnB,CAAX;CAAwD7a,UAAAA,IAAI,GAACsX,MAAM,CAACtX,IAAZ;CAAiB,SAA7E,CAA6E,OAAM+M,CAAN,EAAQ;CAAG;;CAAA,UAAIqV,OAAO,GAAC,KAAZ;;CAAkB,UAAGvH,KAAK,GAAC,EAAT,EAAY;CAAC,YAAG7a,IAAH,EAAQ;CAAC,cAAG6a,KAAK,GAAC,GAAT,EAAa;CAAC,kBAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAC,SAApD,MAAwD;CAACzU,UAAAA,IAAI,GAACkL,EAAE,CAACqM,KAAH,CAASlX,IAAT,EAAc2W,IAAd,EAAmB,CAAnB,CAAL;CAA2BoL,UAAAA,OAAO,GAAC,IAAR;CAAa;CAAC;;CAAA,UAAG,CAACpiB,IAAJ,EAAS;CAAC,cAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACwN,QAAH,CAAY1Y,IAAI,CAACgX,IAAjB,CAAH,EAA0B;CAAC6D,QAAAA,KAAK,IAAE,CAAC,GAAR;CAAY;;CAAA,UAAGA,KAAK,GAAC,KAAN,IAAa,CAAC3P,EAAE,CAACmN,KAAH,CAASrY,IAAI,CAACgX,IAAd,CAAjB,EAAqC;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAAC2N,OAAJ,EAAY;CAAC,YAAIhF,OAAO,GAAClS,EAAE,CAACkT,OAAH,CAAWpe,IAAX,EAAgB6a,KAAhB,CAAZ;;CAAmC,YAAGuC,OAAH,EAAW;CAAC,gBAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;CAAC;;CAAA,UAAGvC,KAAK,GAAC,GAAT,EAAa;CAAC3P,QAAAA,EAAE,CAAC+W,QAAH,CAAYjiB,IAAZ,EAAiB,CAAjB;CAAoB;;CAAA6a,MAAAA,KAAK,IAAE,EAAE,MAAI,GAAJ,GAAQ,MAAV,CAAP;CAAyB,UAAIvG,MAAM,GAACpJ,EAAE,CAACwT,YAAH,CAAgB;CAAC1e,QAAAA,IAAI,EAACA,IAAN;CAAWK,QAAAA,IAAI,EAAC6K,EAAE,CAACyR,OAAH,CAAW3c,IAAX,CAAhB;CAAiC6a,QAAAA,KAAK,EAACA,KAAvC;CAA6CnG,QAAAA,QAAQ,EAAC,IAAtD;CAA2D8F,QAAAA,QAAQ,EAAC,CAApE;CAAsEnG,QAAAA,UAAU,EAACrU,IAAI,CAACqU,UAAtF;CAAiGgO,QAAAA,QAAQ,EAAC,EAA1G;CAA6Gzf,QAAAA,KAAK,EAAC;CAAnH,OAAhB,EAA0I2b,QAA1I,EAAmJC,MAAnJ,CAAX;;CAAsK,UAAGlK,MAAM,CAACD,UAAP,CAAkB5Q,IAArB,EAA0B;CAAC6Q,QAAAA,MAAM,CAACD,UAAP,CAAkB5Q,IAAlB,CAAuB6Q,MAAvB;CAA+B;;CAAA,UAAG3V,MAAM,CAAC,cAAD,CAAN,IAAwB,EAAEkc,KAAK,GAAC,CAAR,CAA3B,EAAsC;CAAC,YAAG,CAAC3P,EAAE,CAACoX,SAAP,EAAiBpX,EAAE,CAACoX,SAAH,GAAa,EAAb;;CAAgB,YAAG,EAAEjiB,IAAI,IAAI6K,EAAE,CAACoX,SAAb,CAAH,EAA2B;CAACpX,UAAAA,EAAE,CAACoX,SAAH,CAAajiB,IAAb,IAAmB,CAAnB;CAAqB;CAAC;;CAAA,aAAOiU,MAAP;CAAc,KAAv2c;CAAw2cK,IAAAA,KAAK,EAACL,MAAM,IAAE;CAAC,UAAGpJ,EAAE,CAACqX,QAAH,CAAYjO,MAAZ,CAAH,EAAuB;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAGH,MAAM,CAACkO,QAAV,EAAmBlO,MAAM,CAACkO,QAAP,GAAgB,IAAhB;;CAAqB,UAAG;CAAC,YAAGlO,MAAM,CAACD,UAAP,CAAkBM,KAArB,EAA2B;CAACL,UAAAA,MAAM,CAACD,UAAP,CAAkBM,KAAlB,CAAwBL,MAAxB;CAAgC;CAAC,OAAjE,CAAiE,OAAMvH,CAAN,EAAQ;CAAC,cAAMA,CAAN;CAAQ,OAAlF,SAAyF;CAAC7B,QAAAA,EAAE,CAACgU,WAAH,CAAe5K,MAAM,CAACsB,EAAtB;CAA0B;;CAAAtB,MAAAA,MAAM,CAACsB,EAAP,GAAU,IAAV;CAAe,KAArld;CAAsld2M,IAAAA,QAAQ,EAACjO,MAAM,IAAE;CAAC,aAAOA,MAAM,CAACsB,EAAP,KAAY,IAAnB;CAAwB,KAAhod;CAAiodiC,IAAAA,MAAM,EAAC,CAACvD,MAAD,EAAQO,MAAR,EAAe8F,MAAf,KAAwB;CAAC,UAAGzP,EAAE,CAACqX,QAAH,CAAYjO,MAAZ,CAAH,EAAuB;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACH,MAAM,CAACI,QAAR,IAAkB,CAACJ,MAAM,CAACD,UAAP,CAAkBwD,MAAxC,EAA+C;CAAC,cAAM,IAAI3M,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGkG,MAAM,IAAE,CAAR,IAAWA,MAAM,IAAE,CAAnB,IAAsBA,MAAM,IAAE,CAAjC,EAAmC;CAAC,cAAM,IAAIzP,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAAH,MAAAA,MAAM,CAACkG,QAAP,GAAgBlG,MAAM,CAACD,UAAP,CAAkBwD,MAAlB,CAAyBvD,MAAzB,EAAgCO,MAAhC,EAAuC8F,MAAvC,CAAhB;CAA+DrG,MAAAA,MAAM,CAAC+N,QAAP,GAAgB,EAAhB;CAAmB,aAAO/N,MAAM,CAACkG,QAAd;CAAuB,KAAz8d;CAA08djY,IAAAA,IAAI,EAAC,CAAC+R,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6ByY,QAA7B,KAAwC;CAAC,UAAGzY,MAAM,GAAC,CAAP,IAAUyY,QAAQ,GAAC,CAAtB,EAAwB;CAAC,cAAM,IAAItP,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACqX,QAAH,CAAYjO,MAAZ,CAAH,EAAuB;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACH,MAAM,CAACuG,KAAP,GAAa,OAAd,MAAyB,CAA5B,EAA8B;CAAC,cAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAGvJ,EAAE,CAACmN,KAAH,CAAS/D,MAAM,CAACtU,IAAP,CAAYgX,IAArB,CAAH,EAA8B;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACH,MAAM,CAACD,UAAP,CAAkB9R,IAAtB,EAA2B;CAAC,cAAM,IAAI2I,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIgO,OAAO,GAAC,OAAOjI,QAAP,IAAiB,WAA7B;;CAAyC,UAAG,CAACiI,OAAJ,EAAY;CAACjI,QAAAA,QAAQ,GAAClG,MAAM,CAACkG,QAAhB;CAAyB,OAAtC,MAA2C,IAAG,CAAClG,MAAM,CAACI,QAAX,EAAoB;CAAC,cAAM,IAAIxJ,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIO,SAAS,GAACV,MAAM,CAACD,UAAP,CAAkB9R,IAAlB,CAAuB+R,MAAvB,EAA8B/S,MAA9B,EAAqCsT,MAArC,EAA4C9S,MAA5C,EAAmDyY,QAAnD,CAAd;CAA2E,UAAG,CAACiI,OAAJ,EAAYnO,MAAM,CAACkG,QAAP,IAAiBxF,SAAjB;CAA2B,aAAOA,SAAP;CAAiB,KAArhf;CAAshfI,IAAAA,KAAK,EAAC,CAACd,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6ByY,QAA7B,EAAsCC,MAAtC,KAA+C;CAAC,UAAG1Y,MAAM,GAAC,CAAP,IAAUyY,QAAQ,GAAC,CAAtB,EAAwB;CAAC,cAAM,IAAItP,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGvJ,EAAE,CAACqX,QAAH,CAAYjO,MAAZ,CAAH,EAAuB;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACH,MAAM,CAACuG,KAAP,GAAa,OAAd,MAAyB,CAA5B,EAA8B;CAAC,cAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAGvJ,EAAE,CAACmN,KAAH,CAAS/D,MAAM,CAACtU,IAAP,CAAYgX,IAArB,CAAH,EAA8B;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACH,MAAM,CAACD,UAAP,CAAkBe,KAAtB,EAA4B;CAAC,cAAM,IAAIlK,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAGH,MAAM,CAACI,QAAP,IAAiBJ,MAAM,CAACuG,KAAP,GAAa,IAAjC,EAAsC;CAAC3P,QAAAA,EAAE,CAAC2M,MAAH,CAAUvD,MAAV,EAAiB,CAAjB,EAAmB,CAAnB;CAAsB;;CAAA,UAAImO,OAAO,GAAC,OAAOjI,QAAP,IAAiB,WAA7B;;CAAyC,UAAG,CAACiI,OAAJ,EAAY;CAACjI,QAAAA,QAAQ,GAAClG,MAAM,CAACkG,QAAhB;CAAyB,OAAtC,MAA2C,IAAG,CAAClG,MAAM,CAACI,QAAX,EAAoB;CAAC,cAAM,IAAIxJ,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAIiO,YAAY,GAACpO,MAAM,CAACD,UAAP,CAAkBe,KAAlB,CAAwBd,MAAxB,EAA+B/S,MAA/B,EAAsCsT,MAAtC,EAA6C9S,MAA7C,EAAoDyY,QAApD,EAA6DC,MAA7D,CAAjB;CAAsF,UAAG,CAACgI,OAAJ,EAAYnO,MAAM,CAACkG,QAAP,IAAiBkI,YAAjB;CAA8B,aAAOA,YAAP;CAAoB,KAAxrgB;CAAyrgB5K,IAAAA,QAAQ,EAAC,CAACxD,MAAD,EAAQO,MAAR,EAAe9S,MAAf,KAAwB;CAAC,UAAGmJ,EAAE,CAACqX,QAAH,CAAYjO,MAAZ,CAAH,EAAuB;CAAC,cAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAGI,MAAM,GAAC,CAAP,IAAU9S,MAAM,IAAE,CAArB,EAAuB;CAAC,cAAM,IAAImJ,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACH,MAAM,CAACuG,KAAP,GAAa,OAAd,MAAyB,CAA5B,EAA8B;CAAC,cAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACvJ,EAAE,CAACqN,MAAH,CAAUjE,MAAM,CAACtU,IAAP,CAAYgX,IAAtB,CAAD,IAA8B,CAAC9L,EAAE,CAACmN,KAAH,CAAS/D,MAAM,CAACtU,IAAP,CAAYgX,IAArB,CAAlC,EAA6D;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACH,MAAM,CAACD,UAAP,CAAkByD,QAAtB,EAA+B;CAAC,cAAM,IAAI5M,EAAE,CAACuJ,UAAP,CAAkB,GAAlB,CAAN;CAA6B;;CAAAH,MAAAA,MAAM,CAACD,UAAP,CAAkByD,QAAlB,CAA2BxD,MAA3B,EAAkCO,MAAlC,EAAyC9S,MAAzC;CAAiD,KAApkhB;CAAqkhBgW,IAAAA,IAAI,EAAC,CAACzD,MAAD,EAAQ8B,OAAR,EAAgBrU,MAAhB,EAAuByY,QAAvB,EAAgCI,IAAhC,EAAqCC,KAArC,KAA6C;CAAC,UAAG,CAACD,IAAI,GAAC,CAAN,MAAW,CAAX,IAAc,CAACC,KAAK,GAAC,CAAP,MAAY,CAA1B,IAA6B,CAACvG,MAAM,CAACuG,KAAP,GAAa,OAAd,MAAyB,CAAzD,EAA2D;CAAC,cAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACH,MAAM,CAACuG,KAAP,GAAa,OAAd,MAAyB,CAA5B,EAA8B;CAAC,cAAM,IAAI3P,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,UAAG,CAACH,MAAM,CAACD,UAAP,CAAkB0D,IAAtB,EAA2B;CAAC,cAAM,IAAI7M,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOH,MAAM,CAACD,UAAP,CAAkB0D,IAAlB,CAAuBzD,MAAvB,EAA8B8B,OAA9B,EAAsCrU,MAAtC,EAA6CyY,QAA7C,EAAsDI,IAAtD,EAA2DC,KAA3D,CAAP;CAAyE,KAA14hB;CAA24hB7C,IAAAA,KAAK,EAAC,CAAC1D,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6BiZ,SAA7B,KAAyC;CAAC,UAAG,CAAC1G,MAAD,IAAS,CAACA,MAAM,CAACD,UAAP,CAAkB2D,KAA/B,EAAqC;CAAC,eAAO,CAAP;CAAS;;CAAA,aAAO1D,MAAM,CAACD,UAAP,CAAkB2D,KAAlB,CAAwB1D,MAAxB,EAA+B/S,MAA/B,EAAsCsT,MAAtC,EAA6C9S,MAA7C,EAAoDiZ,SAApD,CAAP;CAAsE,KAAhjiB;CAAijiB2H,IAAAA,MAAM,EAACrO,MAAM,IAAE,CAAhkiB;CAAkkiBsO,IAAAA,KAAK,EAAC,CAACtO,MAAD,EAAQnV,GAAR,EAAYsQ,GAAZ,KAAkB;CAAC,UAAG,CAAC6E,MAAM,CAACD,UAAP,CAAkBuO,KAAtB,EAA4B;CAAC,cAAM,IAAI1X,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,aAAOH,MAAM,CAACD,UAAP,CAAkBuO,KAAlB,CAAwBtO,MAAxB,EAA+BnV,GAA/B,EAAmCsQ,GAAnC,CAAP;CAA+C,KAAnsiB;CAAosiB7N,IAAAA,QAAQ,EAAC,UAACvB,IAAD,EAAgB;CAAA,UAAV2b,IAAU,uEAAL,EAAK;CAACA,MAAAA,IAAI,CAACnB,KAAL,GAAWmB,IAAI,CAACnB,KAAL,IAAY,CAAvB;CAAyBmB,MAAAA,IAAI,CAAC6G,QAAL,GAAc7G,IAAI,CAAC6G,QAAL,IAAe,QAA7B;;CAAsC,UAAG7G,IAAI,CAAC6G,QAAL,KAAgB,MAAhB,IAAwB7G,IAAI,CAAC6G,QAAL,KAAgB,QAA3C,EAAoD;CAAC,cAAM,IAAI3iB,KAAJ,CAAU,4BAA0B8b,IAAI,CAAC6G,QAA/B,GAAwC,GAAlD,CAAN;CAA6D;;CAAA,UAAIvhB,GAAJ;CAAQ,UAAIgT,MAAM,GAACpJ,EAAE,CAACzH,IAAH,CAAQpD,IAAR,EAAa2b,IAAI,CAACnB,KAAlB,CAAX;CAAoC,UAAI2G,IAAI,GAACtW,EAAE,CAACsW,IAAH,CAAQnhB,IAAR,CAAT;CAAuB,UAAI0B,MAAM,GAACyf,IAAI,CAAC7Y,IAAhB;CAAqB,UAAIS,GAAG,GAAC,IAAI5H,UAAJ,CAAeO,MAAf,CAAR;CAA+BmJ,MAAAA,EAAE,CAAC3I,IAAH,CAAQ+R,MAAR,EAAelL,GAAf,EAAmB,CAAnB,EAAqBrH,MAArB,EAA4B,CAA5B;;CAA+B,UAAGia,IAAI,CAAC6G,QAAL,KAAgB,MAAnB,EAA0B;CAACvhB,QAAAA,GAAG,GAACqE,iBAAiB,CAACyD,GAAD,EAAK,CAAL,CAArB;CAA6B,OAAxD,MAA6D,IAAG4S,IAAI,CAAC6G,QAAL,KAAgB,QAAnB,EAA4B;CAACvhB,QAAAA,GAAG,GAAC8H,GAAJ;CAAQ;;CAAA8B,MAAAA,EAAE,CAACyJ,KAAH,CAASL,MAAT;CAAiB,aAAOhT,GAAP;CAAW,KAAnqjB;CAAoqjBwhB,IAAAA,SAAS,EAAC,UAACziB,IAAD,EAAMyB,IAAN,EAAqB;CAAA,UAAVka,IAAU,uEAAL,EAAK;CAACA,MAAAA,IAAI,CAACnB,KAAL,GAAWmB,IAAI,CAACnB,KAAL,IAAY,GAAvB;CAA2B,UAAIvG,MAAM,GAACpJ,EAAE,CAACzH,IAAH,CAAQpD,IAAR,EAAa2b,IAAI,CAACnB,KAAlB,EAAwBmB,IAAI,CAAChF,IAA7B,CAAX;;CAA8C,UAAG,OAAOlV,IAAP,IAAa,QAAhB,EAAyB;CAAC,YAAIsH,GAAG,GAAC,IAAI5H,UAAJ,CAAegG,eAAe,CAAC1F,IAAD,CAAf,GAAsB,CAArC,CAAR;CAAgD,YAAIihB,cAAc,GAACjc,iBAAiB,CAAChF,IAAD,EAAMsH,GAAN,EAAU,CAAV,EAAYA,GAAG,CAACrH,MAAhB,CAApC;CAA4DmJ,QAAAA,EAAE,CAACkK,KAAH,CAASd,MAAT,EAAgBlL,GAAhB,EAAoB,CAApB,EAAsB2Z,cAAtB,EAAqC1hB,SAArC,EAA+C2a,IAAI,CAACvB,MAApD;CAA4D,OAAlM,MAAuM,IAAGC,WAAW,CAACsI,MAAZ,CAAmBlhB,IAAnB,CAAH,EAA4B;CAACoJ,QAAAA,EAAE,CAACkK,KAAH,CAASd,MAAT,EAAgBxS,IAAhB,EAAqB,CAArB,EAAuBA,IAAI,CAACmhB,UAA5B,EAAuC5hB,SAAvC,EAAiD2a,IAAI,CAACvB,MAAtD;CAA8D,OAA3F,MAA+F;CAAC,cAAM,IAAIva,KAAJ,CAAU,uBAAV,CAAN;CAAyC;;CAAAgL,MAAAA,EAAE,CAACyJ,KAAH,CAASL,MAAT;CAAiB,KAA9mkB;CAA+mkB1B,IAAAA,GAAG,EAAC,MAAI1H,EAAE,CAAC0Q,WAA1nkB;CAAsokBsH,IAAAA,KAAK,EAAC7iB,IAAI,IAAE;CAAC,UAAIiX,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;;CAA6C,UAAGnF,MAAM,CAACtX,IAAP,KAAc,IAAjB,EAAsB;CAAC,cAAM,IAAIkL,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAG,CAACvJ,EAAE,CAACmN,KAAH,CAASf,MAAM,CAACtX,IAAP,CAAYgX,IAArB,CAAJ,EAA+B;CAAC,cAAM,IAAI9L,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,UAAI2I,OAAO,GAAClS,EAAE,CAAC6S,eAAH,CAAmBzG,MAAM,CAACtX,IAA1B,EAA+B,GAA/B,CAAZ;;CAAgD,UAAGod,OAAH,EAAW;CAAC,cAAM,IAAIlS,EAAE,CAACuJ,UAAP,CAAkB2I,OAAlB,CAAN;CAAiC;;CAAAlS,MAAAA,EAAE,CAAC0Q,WAAH,GAAetE,MAAM,CAACjX,IAAtB;CAA2B,KAAv6kB;CAAw6kB8iB,IAAAA,wBAAwB,EAAC,MAAI;CAACjY,MAAAA,EAAE,CAAC0V,KAAH,CAAS,MAAT;CAAiB1V,MAAAA,EAAE,CAAC0V,KAAH,CAAS,OAAT;CAAkB1V,MAAAA,EAAE,CAAC0V,KAAH,CAAS,gBAAT;CAA2B,KAApglB;CAAqglBwC,IAAAA,oBAAoB,EAAC,MAAI;CAAClY,MAAAA,EAAE,CAAC0V,KAAH,CAAS,MAAT;CAAiB1V,MAAAA,EAAE,CAACkJ,cAAH,CAAkBlJ,EAAE,CAACqU,OAAH,CAAW,CAAX,EAAa,CAAb,CAAlB,EAAkC;CAAChd,QAAAA,IAAI,EAAC,MAAI,CAAV;CAAY6S,QAAAA,KAAK,EAAC,CAACd,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6B+S,GAA7B,KAAmC/S;CAArD,OAAlC;CAAgGmJ,MAAAA,EAAE,CAAC8V,KAAH,CAAS,WAAT,EAAqB9V,EAAE,CAACqU,OAAH,CAAW,CAAX,EAAa,CAAb,CAArB;CAAsC3L,MAAAA,GAAG,CAACG,QAAJ,CAAa7I,EAAE,CAACqU,OAAH,CAAW,CAAX,EAAa,CAAb,CAAb,EAA6B3L,GAAG,CAAC0B,eAAjC;CAAkD1B,MAAAA,GAAG,CAACG,QAAJ,CAAa7I,EAAE,CAACqU,OAAH,CAAW,CAAX,EAAa,CAAb,CAAb,EAA6B3L,GAAG,CAACsC,gBAAjC;CAAmDhL,MAAAA,EAAE,CAAC8V,KAAH,CAAS,UAAT,EAAoB9V,EAAE,CAACqU,OAAH,CAAW,CAAX,EAAa,CAAb,CAApB;CAAqCrU,MAAAA,EAAE,CAAC8V,KAAH,CAAS,WAAT,EAAqB9V,EAAE,CAACqU,OAAH,CAAW,CAAX,EAAa,CAAb,CAArB;CAAsC,UAAI8D,aAAa,GAAClR,eAAe,EAAjC;CAAoCjH,MAAAA,EAAE,CAACoY,YAAH,CAAgB,MAAhB,EAAuB,QAAvB,EAAgCD,aAAhC;CAA+CnY,MAAAA,EAAE,CAACoY,YAAH,CAAgB,MAAhB,EAAuB,SAAvB,EAAiCD,aAAjC;CAAgDnY,MAAAA,EAAE,CAAC0V,KAAH,CAAS,UAAT;CAAqB1V,MAAAA,EAAE,CAAC0V,KAAH,CAAS,cAAT;CAAyB,KAAvhmB;CAAwhmB2C,IAAAA,wBAAwB,EAAC,MAAI;CAACrY,MAAAA,EAAE,CAAC0V,KAAH,CAAS,OAAT;CAAkB,UAAI4C,SAAS,GAACtY,EAAE,CAAC0V,KAAH,CAAS,YAAT,CAAd;CAAqC1V,MAAAA,EAAE,CAAC0V,KAAH,CAAS,eAAT;CAA0B1V,MAAAA,EAAE,CAAC2L,KAAH,CAAS;CAACA,QAAAA,KAAK,EAAC,MAAI;CAAC,cAAI7W,IAAI,GAACkL,EAAE,CAAC4L,UAAH,CAAc0M,SAAd,EAAwB,IAAxB,EAA6B,QAAM,GAAnC,EAAuC,EAAvC,CAAT;CAAoDxjB,UAAAA,IAAI,CAACoX,QAAL,GAAc;CAACE,YAAAA,MAAM,EAAC,CAACP,MAAD,EAAQzJ,IAAR,KAAe;CAAC,kBAAIsI,EAAE,GAAC,CAACtI,IAAR;CAAa,kBAAIgH,MAAM,GAACpJ,EAAE,CAACuT,SAAH,CAAa7I,EAAb,CAAX;CAA4B,kBAAG,CAACtB,MAAJ,EAAW,MAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B,kBAAInT,GAAG,GAAC;CAACyV,gBAAAA,MAAM,EAAC,IAAR;CAAaF,gBAAAA,KAAK,EAAC;CAACgG,kBAAAA,UAAU,EAAC;CAAZ,iBAAnB;CAAuCzF,gBAAAA,QAAQ,EAAC;CAACc,kBAAAA,QAAQ,EAAC,MAAI5D,MAAM,CAACjU;CAArB;CAAhD,eAAR;CAAoFiB,cAAAA,GAAG,CAACyV,MAAJ,GAAWzV,GAAX;CAAe,qBAAOA,GAAP;CAAW;CAArN,WAAd;CAAqO,iBAAOtB,IAAP;CAAY;CAAjT,OAAT,EAA4T,EAA5T,EAA+T,eAA/T;CAAgV,KAAv9mB;CAAw9mByjB,IAAAA,qBAAqB,EAAC,MAAI;CAAC,UAAG9kB,MAAM,CAAC,OAAD,CAAT,EAAmB;CAACuM,QAAAA,EAAE,CAACoY,YAAH,CAAgB,MAAhB,EAAuB,OAAvB,EAA+B3kB,MAAM,CAAC,OAAD,CAArC;CAAgD,OAApE,MAAwE;CAACuM,QAAAA,EAAE,CAAC0M,OAAH,CAAW,UAAX,EAAsB,YAAtB;CAAoC;;CAAA,UAAGjZ,MAAM,CAAC,QAAD,CAAT,EAAoB;CAACuM,QAAAA,EAAE,CAACoY,YAAH,CAAgB,MAAhB,EAAuB,QAAvB,EAAgC,IAAhC,EAAqC3kB,MAAM,CAAC,QAAD,CAA3C;CAAuD,OAA5E,MAAgF;CAACuM,QAAAA,EAAE,CAAC0M,OAAH,CAAW,UAAX,EAAsB,aAAtB;CAAqC;;CAAA,UAAGjZ,MAAM,CAAC,QAAD,CAAT,EAAoB;CAACuM,QAAAA,EAAE,CAACoY,YAAH,CAAgB,MAAhB,EAAuB,QAAvB,EAAgC,IAAhC,EAAqC3kB,MAAM,CAAC,QAAD,CAA3C;CAAuD,OAA5E,MAAgF;CAACuM,QAAAA,EAAE,CAAC0M,OAAH,CAAW,WAAX,EAAuB,aAAvB;CAAsC;;CAAA,UAAIjC,KAAK,GAACzK,EAAE,CAACzH,IAAH,CAAQ,YAAR,EAAqB,CAArB,CAAV;CAAkC,UAAIigB,MAAM,GAACxY,EAAE,CAACzH,IAAH,CAAQ,aAAR,EAAsB,CAAtB,CAAX;CAAoC,UAAIkgB,MAAM,GAACzY,EAAE,CAACzH,IAAH,CAAQ,aAAR,EAAsB,CAAtB,CAAX;CAAoChC,MAAAA,MAAM,CAACkU,KAAK,CAACC,EAAN,KAAW,CAAZ,EAAc,+BAA6BD,KAAK,CAACC,EAAnC,GAAsC,GAApD,CAAN;CAA+DnU,MAAAA,MAAM,CAACiiB,MAAM,CAAC9N,EAAP,KAAY,CAAb,EAAe,gCAA8B8N,MAAM,CAAC9N,EAArC,GAAwC,GAAvD,CAAN;CAAkEnU,MAAAA,MAAM,CAACkiB,MAAM,CAAC/N,EAAP,KAAY,CAAb,EAAe,gCAA8B+N,MAAM,CAAC/N,EAArC,GAAwC,GAAvD,CAAN;CAAkE,KAA1noB;CAA2noBgO,IAAAA,gBAAgB,EAAC,MAAI;CAAC,UAAG1Y,EAAE,CAACuJ,UAAN,EAAiB;;CAAOvJ,MAAAA,EAAE,CAACuJ,UAAH,GAAc,SAASA,UAAT,CAAoB0J,KAApB,EAA0Bne,IAA1B,EAA+B;CAAC,aAAKA,IAAL,GAAUA,IAAV;;CAAe,aAAK6jB,QAAL,GAAc,UAAS1F,KAAT,EAAe;CAAC,eAAKA,KAAL,GAAWA,KAAX;;CAAiB,eAAI,IAAI/D,GAAR,IAAekB,WAAf,EAA2B;CAAC,gBAAGA,WAAW,CAAClB,GAAD,CAAX,KAAmB+D,KAAtB,EAA4B;CAAC,mBAAK2F,IAAL,GAAU1J,GAAV;CAAc;CAAM;CAAC;CAAC,SAA9H;;CAA+H,aAAKyJ,QAAL,CAAc1F,KAAd;CAAqB,aAAK/e,OAAL,GAAaic,cAAc,CAAC8C,KAAD,CAA3B;;CAAmC,YAAG,KAAKjO,KAAR,EAAc;CAAC5Q,UAAAA,MAAM,CAACmF,cAAP,CAAsB,IAAtB,EAA2B,OAA3B,EAAmC;CAAC2L,YAAAA,KAAK,EAAE,IAAIlQ,KAAJ,EAAD,CAAYgQ,KAAnB;CAAyB6T,YAAAA,QAAQ,EAAC;CAAlC,WAAnC;CAA4E,eAAK7T,KAAL,GAAWN,WAAW,CAAC,KAAKM,KAAN,CAAtB;CAAmC;CAAC,OAAnX;;CAAoXhF,MAAAA,EAAE,CAACuJ,UAAH,CAAc3K,SAAd,GAAwB,IAAI5J,KAAJ,EAAxB;CAAkCgL,MAAAA,EAAE,CAACuJ,UAAH,CAAc3K,SAAd,CAAwBka,WAAxB,GAAoC9Y,EAAE,CAACuJ,UAAvC;CAAkD,OAAC,EAAD,EAAK2L,OAAL,CAAa0D,IAAI,IAAE;CAAC5Y,QAAAA,EAAE,CAAC2O,aAAH,CAAiBiK,IAAjB,IAAuB,IAAI5Y,EAAE,CAACuJ,UAAP,CAAkBqP,IAAlB,CAAvB;CAA+C5Y,QAAAA,EAAE,CAAC2O,aAAH,CAAiBiK,IAAjB,EAAuB5T,KAAvB,GAA6B,2BAA7B;CAAyD,OAA5H;CAA8H,KAA/upB;CAAgvpB+T,IAAAA,UAAU,EAAC,MAAI;CAAC/Y,MAAAA,EAAE,CAAC0Y,gBAAH;CAAsB1Y,MAAAA,EAAE,CAACyQ,SAAH,GAAa,IAAI7J,KAAJ,CAAU,IAAV,CAAb;CAA6B5G,MAAAA,EAAE,CAAC2L,KAAH,CAASF,KAAT,EAAe,EAAf,EAAkB,GAAlB;CAAuBzL,MAAAA,EAAE,CAACiY,wBAAH;CAA8BjY,MAAAA,EAAE,CAACkY,oBAAH;CAA0BlY,MAAAA,EAAE,CAACqY,wBAAH;CAA8BrY,MAAAA,EAAE,CAAC2Q,WAAH,GAAe;CAAC,iBAAQlF;CAAT,OAAf;CAA+B,KAA/7pB;CAAg8pBxL,IAAAA,IAAI,EAAC,CAAC+I,KAAD,EAAOC,MAAP,EAAcvR,KAAd,KAAsB;CAACnB,MAAAA,MAAM,CAAC,CAACyJ,EAAE,CAACC,IAAH,CAAQC,WAAV,EAAsB,8KAAtB,CAAN;CAA4MF,MAAAA,EAAE,CAACC,IAAH,CAAQC,WAAR,GAAoB,IAApB;CAAyBF,MAAAA,EAAE,CAAC0Y,gBAAH;CAAsBjlB,MAAAA,MAAM,CAAC,OAAD,CAAN,GAAgBuV,KAAK,IAAEvV,MAAM,CAAC,OAAD,CAA7B;CAAuCA,MAAAA,MAAM,CAAC,QAAD,CAAN,GAAiBwV,MAAM,IAAExV,MAAM,CAAC,QAAD,CAA/B;CAA0CA,MAAAA,MAAM,CAAC,QAAD,CAAN,GAAiBiE,KAAK,IAAEjE,MAAM,CAAC,QAAD,CAA9B;CAAyCuM,MAAAA,EAAE,CAACuY,qBAAH;CAA2B,KAA52qB;CAA62qBS,IAAAA,IAAI,EAAC,MAAI;CAAChZ,MAAAA,EAAE,CAACC,IAAH,CAAQC,WAAR,GAAoB,KAApB;;CAA0B+Y,MAAAA,aAAa;;CAAG,WAAI,IAAIhd,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC+D,EAAE,CAACuQ,OAAH,CAAW1Z,MAAzB,EAAgCoF,CAAC,EAAjC,EAAoC;CAAC,YAAImN,MAAM,GAACpJ,EAAE,CAACuQ,OAAH,CAAWtU,CAAX,CAAX;;CAAyB,YAAG,CAACmN,MAAJ,EAAW;CAAC;CAAS;;CAAApJ,QAAAA,EAAE,CAACyJ,KAAH,CAASL,MAAT;CAAiB;CAAC,KAAtgrB;CAAugrB8P,IAAAA,OAAO,EAAC,CAACC,OAAD,EAASC,QAAT,KAAoB;CAAC,UAAItN,IAAI,GAAC,CAAT;CAAW,UAAGqN,OAAH,EAAWrN,IAAI,IAAE,MAAI,EAAV;CAAa,UAAGsN,QAAH,EAAYtN,IAAI,IAAE,GAAN;CAAU,aAAOA,IAAP;CAAY,KAAzmrB;CAA0mrBuN,IAAAA,UAAU,EAAC,CAAClkB,IAAD,EAAMmkB,mBAAN,KAA4B;CAAC,UAAIljB,GAAG,GAAC4J,EAAE,CAACuZ,WAAH,CAAepkB,IAAf,EAAoBmkB,mBAApB,CAAR;;CAAiD,UAAGljB,GAAG,CAACojB,MAAP,EAAc;CAAC,eAAOpjB,GAAG,CAACud,MAAX;CAAkB,OAAjC,MAAqC;CAAC,eAAO,IAAP;CAAY;CAAC,KAAtvrB;CAAuvrB4F,IAAAA,WAAW,EAAC,CAACpkB,IAAD,EAAMmkB,mBAAN,KAA4B;CAAC,UAAG;CAAC,YAAIlN,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,UAAAA,MAAM,EAAC,CAAC+H;CAAT,SAAnB,CAAX;CAA6DnkB,QAAAA,IAAI,GAACiX,MAAM,CAACjX,IAAZ;CAAiB,OAAlF,CAAkF,OAAM0M,CAAN,EAAQ;;CAAE,UAAIzL,GAAG,GAAC;CAACsb,QAAAA,MAAM,EAAC,KAAR;CAAc8H,QAAAA,MAAM,EAAC,KAArB;CAA2B9hB,QAAAA,KAAK,EAAC,CAAjC;CAAmC0K,QAAAA,IAAI,EAAC,IAAxC;CAA6CjN,QAAAA,IAAI,EAAC,IAAlD;CAAuDwe,QAAAA,MAAM,EAAC,IAA9D;CAAmE8F,QAAAA,YAAY,EAAC,KAAhF;CAAsFC,QAAAA,UAAU,EAAC,IAAjG;CAAsGC,QAAAA,YAAY,EAAC;CAAnH,OAAR;;CAAiI,UAAG;CAAC,YAAIvN,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAAC0W,UAAAA,MAAM,EAAC;CAAR,SAAnB,CAAX;CAA6CzV,QAAAA,GAAG,CAACqjB,YAAJ,GAAiB,IAAjB;CAAsBrjB,QAAAA,GAAG,CAACsjB,UAAJ,GAAetN,MAAM,CAACjX,IAAtB;CAA2BiB,QAAAA,GAAG,CAACujB,YAAJ,GAAiBvN,MAAM,CAACtX,IAAxB;CAA6BsB,QAAAA,GAAG,CAACgM,IAAJ,GAASgD,IAAI,CAACqB,QAAL,CAActR,IAAd,CAAT;CAA6BiX,QAAAA,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,UAAAA,MAAM,EAAC,CAAC+H;CAAT,SAAnB,CAAP;CAAyDljB,QAAAA,GAAG,CAACojB,MAAJ,GAAW,IAAX;CAAgBpjB,QAAAA,GAAG,CAACjB,IAAJ,GAASiX,MAAM,CAACjX,IAAhB;CAAqBiB,QAAAA,GAAG,CAACud,MAAJ,GAAWvH,MAAM,CAACtX,IAAlB;CAAuBsB,QAAAA,GAAG,CAACgM,IAAJ,GAASgK,MAAM,CAACtX,IAAP,CAAYsN,IAArB;CAA0BhM,QAAAA,GAAG,CAACsb,MAAJ,GAAWtF,MAAM,CAACjX,IAAP,KAAc,GAAzB;CAA6B,OAAxU,CAAwU,OAAM0M,CAAN,EAAQ;CAACzL,QAAAA,GAAG,CAACsB,KAAJ,GAAUmK,CAAC,CAACoR,KAAZ;CAAkB;;CAAA,aAAO7c,GAAP;CAAW,KAA32sB;CAA42sBwjB,IAAAA,UAAU,EAAC,CAAC/N,MAAD,EAAQ1W,IAAR,EAAagkB,OAAb,EAAqBC,QAArB,KAAgC;CAACvN,MAAAA,MAAM,GAAC,OAAOA,MAAP,IAAe,QAAf,GAAwBA,MAAxB,GAA+B7L,EAAE,CAACyR,OAAH,CAAW5F,MAAX,CAAtC;CAAyD,UAAIlG,KAAK,GAACxQ,IAAI,CAACgR,KAAL,CAAW,GAAX,EAAgB0T,OAAhB,EAAV;;CAAoC,aAAMlU,KAAK,CAAC9O,MAAZ,EAAmB;CAAC,YAAIijB,IAAI,GAACnU,KAAK,CAACgP,GAAN,EAAT;CAAqB,YAAG,CAACmF,IAAJ,EAAS;CAAS,YAAI5I,OAAO,GAAC9L,IAAI,CAAC0B,KAAL,CAAW+E,MAAX,EAAkBiO,IAAlB,CAAZ;;CAAoC,YAAG;CAAC9Z,UAAAA,EAAE,CAAC0V,KAAH,CAASxE,OAAT;CAAkB,SAAtB,CAAsB,OAAMrP,CAAN,EAAQ;;CAAEgK,QAAAA,MAAM,GAACqF,OAAP;CAAe;;CAAA,aAAOA,OAAP;CAAe,KAAlptB;CAAmptB6I,IAAAA,UAAU,EAAC,CAAClO,MAAD,EAAQzJ,IAAR,EAAa4X,UAAb,EAAwBb,OAAxB,EAAgCC,QAAhC,KAA2C;CAAC,UAAIjkB,IAAI,GAACiQ,IAAI,CAAC0B,KAAL,CAAW,OAAO+E,MAAP,IAAe,QAAf,GAAwBA,MAAxB,GAA+B7L,EAAE,CAACyR,OAAH,CAAW5F,MAAX,CAA1C,EAA6DzJ,IAA7D,CAAT;CAA4E,UAAI0J,IAAI,GAAC9L,EAAE,CAACkZ,OAAH,CAAWC,OAAX,EAAmBC,QAAnB,CAAT;CAAsC,aAAOpZ,EAAE,CAACyV,MAAH,CAAUtgB,IAAV,EAAe2W,IAAf,CAAP;CAA4B,KAAx1tB;CAAy1tBmO,IAAAA,cAAc,EAAC,CAACpO,MAAD,EAAQzJ,IAAR,EAAaxL,IAAb,EAAkBuiB,OAAlB,EAA0BC,QAA1B,EAAmC7J,MAAnC,KAA4C;CAAC,UAAIpa,IAAI,GAACiN,IAAT;;CAAc,UAAGyJ,MAAH,EAAU;CAACA,QAAAA,MAAM,GAAC,OAAOA,MAAP,IAAe,QAAf,GAAwBA,MAAxB,GAA+B7L,EAAE,CAACyR,OAAH,CAAW5F,MAAX,CAAtC;CAAyD1W,QAAAA,IAAI,GAACiN,IAAI,GAACgD,IAAI,CAAC0B,KAAL,CAAW+E,MAAX,EAAkBzJ,IAAlB,CAAD,GAAyByJ,MAAlC;CAAyC;;CAAA,UAAIC,IAAI,GAAC9L,EAAE,CAACkZ,OAAH,CAAWC,OAAX,EAAmBC,QAAnB,CAAT;CAAsC,UAAItkB,IAAI,GAACkL,EAAE,CAACyV,MAAH,CAAUtgB,IAAV,EAAe2W,IAAf,CAAT;;CAA8B,UAAGlV,IAAH,EAAQ;CAAC,YAAG,OAAOA,IAAP,IAAa,QAAhB,EAAyB;CAAC,cAAIoR,GAAG,GAAC,IAAIpB,KAAJ,CAAUhQ,IAAI,CAACC,MAAf,CAAR;;CAA+B,eAAI,IAAIoF,CAAC,GAAC,CAAN,EAAQM,GAAG,GAAC3F,IAAI,CAACC,MAArB,EAA4BoF,CAAC,GAACM,GAA9B,EAAkC,EAAEN,CAApC,EAAsC+L,GAAG,CAAC/L,CAAD,CAAH,GAAOrF,IAAI,CAACuF,UAAL,CAAgBF,CAAhB,CAAP;;CAA0BrF,UAAAA,IAAI,GAACoR,GAAL;CAAS;;CAAAhI,QAAAA,EAAE,CAACyW,KAAH,CAAS3hB,IAAT,EAAcgX,IAAI,GAAC,GAAnB;CAAwB,YAAI1C,MAAM,GAACpJ,EAAE,CAACzH,IAAH,CAAQzD,IAAR,EAAa,GAAb,CAAX;CAA6BkL,QAAAA,EAAE,CAACkK,KAAH,CAASd,MAAT,EAAgBxS,IAAhB,EAAqB,CAArB,EAAuBA,IAAI,CAACC,MAA5B,EAAmC,CAAnC,EAAqC0Y,MAArC;CAA6CvP,QAAAA,EAAE,CAACyJ,KAAH,CAASL,MAAT;CAAiBpJ,QAAAA,EAAE,CAACyW,KAAH,CAAS3hB,IAAT,EAAcgX,IAAd;CAAoB;;CAAA,aAAOhX,IAAP;CAAY,KAAl3uB;CAAm3uBsjB,IAAAA,YAAY,EAAC,CAACvM,MAAD,EAAQzJ,IAAR,EAAa4G,KAAb,EAAmBC,MAAnB,KAA4B;CAAC,UAAI9T,IAAI,GAACiQ,IAAI,CAAC0B,KAAL,CAAW,OAAO+E,MAAP,IAAe,QAAf,GAAwBA,MAAxB,GAA+B7L,EAAE,CAACyR,OAAH,CAAW5F,MAAX,CAA1C,EAA6DzJ,IAA7D,CAAT;CAA4E,UAAI0J,IAAI,GAAC9L,EAAE,CAACkZ,OAAH,CAAW,CAAC,CAAClQ,KAAb,EAAmB,CAAC,CAACC,MAArB,CAAT;CAAsC,UAAG,CAACjJ,EAAE,CAACoY,YAAH,CAAgBjE,KAApB,EAA0BnU,EAAE,CAACoY,YAAH,CAAgBjE,KAAhB,GAAsB,EAAtB;CAAyB,UAAIrL,GAAG,GAAC9I,EAAE,CAACqU,OAAH,CAAWrU,EAAE,CAACoY,YAAH,CAAgBjE,KAAhB,EAAX,EAAmC,CAAnC,CAAR;CAA8CnU,MAAAA,EAAE,CAACkJ,cAAH,CAAkBJ,GAAlB,EAAsB;CAACvQ,QAAAA,IAAI,EAAC6Q,MAAM,IAAE;CAACA,UAAAA,MAAM,CAACI,QAAP,GAAgB,KAAhB;CAAsB,SAArC;CAAsCC,QAAAA,KAAK,EAACL,MAAM,IAAE;CAAC,cAAGH,MAAM,IAAEA,MAAM,CAAC5S,MAAf,IAAuB4S,MAAM,CAAC5S,MAAP,CAAcQ,MAAxC,EAA+C;CAACoS,YAAAA,MAAM,CAAC,EAAD,CAAN;CAAW;CAAC,SAAjH;CAAkH5R,QAAAA,IAAI,EAAC,CAAC+R,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6B+S,GAA7B,KAAmC;CAAC,cAAIE,SAAS,GAAC,CAAd;;CAAgB,eAAI,IAAI7N,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqBoF,CAAC,EAAtB,EAAyB;CAAC,gBAAI4H,MAAJ;;CAAW,gBAAG;CAACA,cAAAA,MAAM,GAACmF,KAAK,EAAZ;CAAe,aAAnB,CAAmB,OAAMnH,CAAN,EAAQ;CAAC,oBAAM,IAAI7B,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,gBAAG1F,MAAM,KAAG1N,SAAT,IAAoB2T,SAAS,KAAG,CAAnC,EAAqC;CAAC,oBAAM,IAAI9J,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B;;CAAA,gBAAG1F,MAAM,KAAG,IAAT,IAAeA,MAAM,KAAG1N,SAA3B,EAAqC;CAAM2T,YAAAA,SAAS;CAAGzT,YAAAA,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAN,GAAiB4H,MAAjB;CAAwB;;CAAA,cAAGiG,SAAH,EAAa;CAACV,YAAAA,MAAM,CAACtU,IAAP,CAAYiV,SAAZ,GAAsBC,IAAI,CAACC,GAAL,EAAtB;CAAiC;;CAAA,iBAAOH,SAAP;CAAiB,SAAxd;CAAydI,QAAAA,KAAK,EAAC,CAACd,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6B+S,GAA7B,KAAmC;CAAC,eAAI,IAAI3N,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqBoF,CAAC,EAAtB,EAAyB;CAAC,gBAAG;CAACgN,cAAAA,MAAM,CAAC5S,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAP,CAAN;CAAyB,aAA7B,CAA6B,OAAM4F,CAAN,EAAQ;CAAC,oBAAM,IAAI7B,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAC;;CAAA,cAAG1S,MAAH,EAAU;CAACuS,YAAAA,MAAM,CAACtU,IAAP,CAAYiV,SAAZ,GAAsBC,IAAI,CAACC,GAAL,EAAtB;CAAiC;;CAAA,iBAAOhO,CAAP;CAAS;CAArpB,OAAtB;CAA8qB,aAAO+D,EAAE,CAAC8V,KAAH,CAAS3gB,IAAT,EAAc2W,IAAd,EAAmBhD,GAAnB,CAAP;CAA+B,KAA7zwB;CAA8zwBoR,IAAAA,aAAa,EAACC,GAAG,IAAE;CAAC,UAAGA,GAAG,CAACC,QAAJ,IAAcD,GAAG,CAACE,QAAlB,IAA4BF,GAAG,CAACpN,IAAhC,IAAsCoN,GAAG,CAAC/M,QAA7C,EAAsD,OAAO,IAAP;;CAAY,UAAG,OAAO9U,cAAP,IAAuB,WAA1B,EAAsC;CAAC,cAAM,IAAItD,KAAJ,CAAU,kMAAV,CAAN;CAAoN,OAA3P,MAAgQ,IAAGI,KAAH,EAAS;CAAC,YAAG;CAAC+kB,UAAAA,GAAG,CAAC/M,QAAJ,GAAatC,kBAAkB,CAAC1V,KAAK,CAAC+kB,GAAG,CAAC/hB,GAAL,CAAN,EAAgB,IAAhB,CAA/B;CAAqD+hB,UAAAA,GAAG,CAAC7M,SAAJ,GAAc6M,GAAG,CAAC/M,QAAJ,CAAavW,MAA3B;CAAkC,SAA3F,CAA2F,OAAMgL,CAAN,EAAQ;CAAC,gBAAM,IAAI7B,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;CAAC,OAA3I,MAA+I;CAAC,cAAM,IAAIvU,KAAJ,CAAU,+CAAV,CAAN;CAAiE;CAAC,KAAt2xB;CAAu2xBslB,IAAAA,cAAc,EAAC,CAACzO,MAAD,EAAQzJ,IAAR,EAAahK,GAAb,EAAiB+gB,OAAjB,EAAyBC,QAAzB,KAAoC;CAAC,eAASmB,cAAT,GAAyB;CAAC,aAAKC,WAAL,GAAiB,KAAjB;CAAuB,aAAKC,MAAL,GAAY,EAAZ;CAAe;;CAAAF,MAAAA,cAAc,CAAC3b,SAAf,CAAyBnF,GAAzB,GAA6B,SAASihB,kBAAT,CAA4B/f,GAA5B,EAAgC;CAAC,YAAGA,GAAG,GAAC,KAAK9D,MAAL,GAAY,CAAhB,IAAmB8D,GAAG,GAAC,CAA1B,EAA4B;CAAC,iBAAOxE,SAAP;CAAiB;;CAAA,YAAIwkB,WAAW,GAAChgB,GAAG,GAAC,KAAKigB,SAAzB;CAAmC,YAAIC,QAAQ,GAAClgB,GAAG,GAAC,KAAKigB,SAAT,GAAmB,CAAhC;CAAkC,eAAO,KAAKE,MAAL,CAAYD,QAAZ,EAAsBF,WAAtB,CAAP;CAA0C,OAA3N;;CAA4NJ,MAAAA,cAAc,CAAC3b,SAAf,CAAyBmc,aAAzB,GAAuC,SAASC,4BAAT,CAAsCF,MAAtC,EAA6C;CAAC,aAAKA,MAAL,GAAYA,MAAZ;CAAmB,OAAxG;;CAAyGP,MAAAA,cAAc,CAAC3b,SAAf,CAAyBqc,WAAzB,GAAqC,SAASC,0BAAT,GAAqC;CAAC,YAAI7iB,GAAG,GAAC,IAAIC,cAAJ,EAAR;CAA2BD,QAAAA,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAgBH,GAAhB,EAAoB,KAApB;CAA2BC,QAAAA,GAAG,CAACG,IAAJ,CAAS,IAAT;CAAe,YAAG,EAAEH,GAAG,CAACO,MAAJ,IAAY,GAAZ,IAAiBP,GAAG,CAACO,MAAJ,GAAW,GAA5B,IAAiCP,GAAG,CAACO,MAAJ,KAAa,GAAhD,CAAH,EAAwD,MAAM,IAAI5D,KAAJ,CAAU,mBAAiBoD,GAAjB,GAAqB,YAArB,GAAkCC,GAAG,CAACO,MAAhD,CAAN;CAA8D,YAAIuiB,UAAU,GAACC,MAAM,CAAC/iB,GAAG,CAACgjB,iBAAJ,CAAsB,gBAAtB,CAAD,CAArB;CAA+D,YAAIC,MAAJ;CAAW,YAAIC,cAAc,GAAC,CAACD,MAAM,GAACjjB,GAAG,CAACgjB,iBAAJ,CAAsB,eAAtB,CAAR,KAAiDC,MAAM,KAAG,OAA7E;CAAqF,YAAIE,QAAQ,GAAC,CAACF,MAAM,GAACjjB,GAAG,CAACgjB,iBAAJ,CAAsB,kBAAtB,CAAR,KAAoDC,MAAM,KAAG,MAA1E;CAAiF,YAAIV,SAAS,GAAC,OAAK,IAAnB;CAAwB,YAAG,CAACW,cAAJ,EAAmBX,SAAS,GAACO,UAAV;;CAAqB,YAAIM,KAAK,GAAC,CAAC5T,IAAD,EAAMC,EAAN,KAAW;CAAC,cAAGD,IAAI,GAACC,EAAR,EAAW,MAAM,IAAI9S,KAAJ,CAAU,oBAAkB6S,IAAlB,GAAuB,IAAvB,GAA4BC,EAA5B,GAA+B,0BAAzC,CAAN;CAA2E,cAAGA,EAAE,GAACqT,UAAU,GAAC,CAAjB,EAAmB,MAAM,IAAInmB,KAAJ,CAAU,UAAQmmB,UAAR,GAAmB,qCAA7B,CAAN;CAA0E,cAAI9iB,GAAG,GAAC,IAAIC,cAAJ,EAAR;CAA2BD,UAAAA,GAAG,CAACE,IAAJ,CAAS,KAAT,EAAeH,GAAf,EAAmB,KAAnB;CAA0B,cAAG+iB,UAAU,KAAGP,SAAhB,EAA0BviB,GAAG,CAACqjB,gBAAJ,CAAqB,OAArB,EAA6B,WAAS7T,IAAT,GAAc,GAAd,GAAkBC,EAA/C;CAAmDzP,UAAAA,GAAG,CAACK,YAAJ,GAAiB,aAAjB;;CAA+B,cAAGL,GAAG,CAACsjB,gBAAP,EAAwB;CAACtjB,YAAAA,GAAG,CAACsjB,gBAAJ,CAAqB,oCAArB;CAA2D;;CAAAtjB,UAAAA,GAAG,CAACG,IAAJ,CAAS,IAAT;CAAe,cAAG,EAAEH,GAAG,CAACO,MAAJ,IAAY,GAAZ,IAAiBP,GAAG,CAACO,MAAJ,GAAW,GAA5B,IAAiCP,GAAG,CAACO,MAAJ,KAAa,GAAhD,CAAH,EAAwD,MAAM,IAAI5D,KAAJ,CAAU,mBAAiBoD,GAAjB,GAAqB,YAArB,GAAkCC,GAAG,CAACO,MAAhD,CAAN;;CAA8D,cAAGP,GAAG,CAACM,QAAJ,KAAexC,SAAlB,EAA4B;CAAC,mBAAO,IAAIG,UAAJ,CAAe+B,GAAG,CAACM,QAAJ,IAAc,EAA7B,CAAP;CAAwC,WAArE,MAAyE;CAAC,mBAAOmS,kBAAkB,CAACzS,GAAG,CAACI,YAAJ,IAAkB,EAAnB,EAAsB,IAAtB,CAAzB;CAAqD;CAAC,SAAnsB;;CAAosB,YAAImjB,SAAS,GAAC,IAAd;CAAmBA,QAAAA,SAAS,CAACb,aAAV,CAAwBF,QAAQ,IAAE;CAAC,cAAI5S,KAAK,GAAC4S,QAAQ,GAACD,SAAnB;CAA6B,cAAI1S,GAAG,GAAC,CAAC2S,QAAQ,GAAC,CAAV,IAAaD,SAAb,GAAuB,CAA/B;CAAiC1S,UAAAA,GAAG,GAACzH,IAAI,CAAC4H,GAAL,CAASH,GAAT,EAAaiT,UAAU,GAAC,CAAxB,CAAJ;;CAA+B,cAAG,OAAOS,SAAS,CAACnB,MAAV,CAAiBI,QAAjB,CAAP,IAAmC,WAAtC,EAAkD;CAACe,YAAAA,SAAS,CAACnB,MAAV,CAAiBI,QAAjB,IAA2BY,KAAK,CAACxT,KAAD,EAAOC,GAAP,CAAhC;CAA4C;;CAAA,cAAG,OAAO0T,SAAS,CAACnB,MAAV,CAAiBI,QAAjB,CAAP,IAAmC,WAAtC,EAAkD,MAAM,IAAI7lB,KAAJ,CAAU,eAAV,CAAN;CAAiC,iBAAO4mB,SAAS,CAACnB,MAAV,CAAiBI,QAAjB,CAAP;CAAkC,SAApV;;CAAsV,YAAGW,QAAQ,IAAE,CAACL,UAAd,EAAyB;CAACP,UAAAA,SAAS,GAACO,UAAU,GAAC,CAArB;CAAuBA,UAAAA,UAAU,GAAC,KAAKL,MAAL,CAAY,CAAZ,EAAejkB,MAA1B;CAAiC+jB,UAAAA,SAAS,GAACO,UAAV;CAAqBtiB,UAAAA,GAAG,CAAC,6EAAD,CAAH;CAAmF;;CAAA,aAAKgjB,OAAL,GAAaV,UAAb;CAAwB,aAAKW,UAAL,GAAgBlB,SAAhB;CAA0B,aAAKJ,WAAL,GAAiB,IAAjB;CAAsB,OAAr2D;;CAAs2D,UAAG,OAAOliB,cAAP,IAAuB,WAA1B,EAAsC;CAAC,YAAG,CAAC7D,qBAAJ,EAA0B,MAAK,qHAAL;CAA2H,YAAImnB,SAAS,GAAC,IAAIrB,cAAJ,EAAd;CAAiCnmB,QAAAA,MAAM,CAAC2nB,gBAAP,CAAwBH,SAAxB,EAAkC;CAAC/kB,UAAAA,MAAM,EAAC;CAAC4C,YAAAA,GAAG,EAAC,YAAU;CAAC,kBAAG,CAAC,KAAK+gB,WAAT,EAAqB;CAAC,qBAAKS,WAAL;CAAmB;;CAAA,qBAAO,KAAKY,OAAZ;CAAoB;CAA7E,WAAR;CAAuFjB,UAAAA,SAAS,EAAC;CAACnhB,YAAAA,GAAG,EAAC,YAAU;CAAC,kBAAG,CAAC,KAAK+gB,WAAT,EAAqB;CAAC,qBAAKS,WAAL;CAAmB;;CAAA,qBAAO,KAAKa,UAAZ;CAAuB;CAAhF;CAAjG,SAAlC;CAAuN,YAAI9B,UAAU,GAAC;CAACI,UAAAA,QAAQ,EAAC,KAAV;CAAgBhN,UAAAA,QAAQ,EAACwO;CAAzB,SAAf;CAAmD,OAAve,MAA2e;CAAC,YAAI5B,UAAU,GAAC;CAACI,UAAAA,QAAQ,EAAC,KAAV;CAAgBhiB,UAAAA,GAAG,EAACA;CAApB,SAAf;CAAwC;;CAAA,UAAItD,IAAI,GAACkL,EAAE,CAAC+Z,UAAH,CAAclO,MAAd,EAAqBzJ,IAArB,EAA0B4X,UAA1B,EAAqCb,OAArC,EAA6CC,QAA7C,CAAT;;CAAgE,UAAGY,UAAU,CAAC5M,QAAd,EAAuB;CAACtY,QAAAA,IAAI,CAACsY,QAAL,GAAc4M,UAAU,CAAC5M,QAAzB;CAAkC,OAA1D,MAA+D,IAAG4M,UAAU,CAAC5hB,GAAd,EAAkB;CAACtD,QAAAA,IAAI,CAACsY,QAAL,GAAc,IAAd;CAAmBtY,QAAAA,IAAI,CAACsD,GAAL,GAAS4hB,UAAU,CAAC5hB,GAApB;CAAwB;;CAAAhE,MAAAA,MAAM,CAAC2nB,gBAAP,CAAwBjnB,IAAxB,EAA6B;CAACwY,QAAAA,SAAS,EAAC;CAAC7T,UAAAA,GAAG,EAAC,YAAU;CAAC,mBAAO,KAAK2T,QAAL,CAAcvW,MAArB;CAA4B;CAA5C;CAAX,OAA7B;CAAwF,UAAIsS,UAAU,GAAC,EAAf;CAAkB,UAAIoM,IAAI,GAACnhB,MAAM,CAACmhB,IAAP,CAAYzgB,IAAI,CAACqU,UAAjB,CAAT;CAAsCoM,MAAAA,IAAI,CAACL,OAAL,CAAahG,GAAG,IAAE;CAAC,YAAI8M,EAAE,GAAClnB,IAAI,CAACqU,UAAL,CAAgB+F,GAAhB,CAAP;;CAA4B/F,QAAAA,UAAU,CAAC+F,GAAD,CAAV,GAAgB,SAAS+M,iBAAT,GAA4B;CAACjc,UAAAA,EAAE,CAACka,aAAH,CAAiBplB,IAAjB;CAAuB,iBAAOknB,EAAE,CAACxZ,KAAH,CAAS,IAAT,EAAcC,SAAd,CAAP;CAAgC,SAApG;CAAqG,OAApJ;;CAAsJ0G,MAAAA,UAAU,CAAC9R,IAAX,GAAiB,CAAC+R,MAAD,EAAQ/S,MAAR,EAAesT,MAAf,EAAsB9S,MAAtB,EAA6ByY,QAA7B,KAAwC;CAACtP,QAAAA,EAAE,CAACka,aAAH,CAAiBplB,IAAjB;CAAuB,YAAIsY,QAAQ,GAAChE,MAAM,CAACtU,IAAP,CAAYsY,QAAzB;CAAkC,YAAGkC,QAAQ,IAAElC,QAAQ,CAACvW,MAAtB,EAA6B,OAAO,CAAP;CAAS,YAAI4G,IAAI,GAACgD,IAAI,CAAC4H,GAAL,CAAS+E,QAAQ,CAACvW,MAAT,GAAgByY,QAAzB,EAAkCzY,MAAlC,CAAT;CAAmDN,QAAAA,MAAM,CAACkH,IAAI,IAAE,CAAP,CAAN;;CAAgB,YAAG2P,QAAQ,CAACpW,KAAZ,EAAkB;CAAC,eAAI,IAAIiF,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACwB,IAAd,EAAmBxB,CAAC,EAApB,EAAuB;CAAC5F,YAAAA,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAN,GAAiBmR,QAAQ,CAACkC,QAAQ,GAACrT,CAAV,CAAzB;CAAsC;CAAC,SAAlF,MAAsF;CAAC,eAAI,IAAIA,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACwB,IAAd,EAAmBxB,CAAC,EAApB,EAAuB;CAAC5F,YAAAA,MAAM,CAACsT,MAAM,GAAC1N,CAAR,CAAN,GAAiBmR,QAAQ,CAAC3T,GAAT,CAAa6V,QAAQ,GAACrT,CAAtB,CAAjB;CAA0C;CAAC;;CAAA,eAAOwB,IAAP;CAAY,OAAlY;;CAAoY3I,MAAAA,IAAI,CAACqU,UAAL,GAAgBA,UAAhB;CAA2B,aAAOrU,IAAP;CAAY,KAAxi5B;CAAyi5BonB,IAAAA,mBAAmB,EAAC,CAACrQ,MAAD,EAAQzJ,IAAR,EAAahK,GAAb,EAAiB+gB,OAAjB,EAAyBC,QAAzB,EAAkC5iB,MAAlC,EAAyCC,OAAzC,EAAiD0lB,cAAjD,EAAgE5M,MAAhE,EAAuE6M,SAAvE,KAAmF;CAAC,UAAIC,QAAQ,GAACja,IAAI,GAACmF,OAAO,CAACpE,OAAR,CAAgBiC,IAAI,CAAC0B,KAAL,CAAW+E,MAAX,EAAkBzJ,IAAlB,CAAhB,CAAD,GAA0CyJ,MAA3D;CAAkE,UAAIpK,GAAG,GAACP,sBAAsB,CAAC,QAAMmb,QAAP,CAA9B;;CAA+C,eAASC,WAAT,CAAqBC,SAArB,EAA+B;CAAC,iBAASC,MAAT,CAAgBD,SAAhB,EAA0B;CAAC,cAAGH,SAAH,EAAaA,SAAS;;CAAG,cAAG,CAACD,cAAJ,EAAmB;CAACnc,YAAAA,EAAE,CAACia,cAAH,CAAkBpO,MAAlB,EAAyBzJ,IAAzB,EAA8Bma,SAA9B,EAAwCpD,OAAxC,EAAgDC,QAAhD,EAAyD7J,MAAzD;CAAiE;;CAAA,cAAG/Y,MAAH,EAAUA,MAAM;CAAGkL,UAAAA,mBAAmB,CAACD,GAAD,CAAnB;CAAyB;;CAAA,YAAGgb,OAAO,CAACC,sBAAR,CAA+BH,SAA/B,EAAyCF,QAAzC,EAAkDG,MAAlD,EAAyD,MAAI;CAAC,cAAG/lB,OAAH,EAAWA,OAAO;CAAGiL,UAAAA,mBAAmB,CAACD,GAAD,CAAnB;CAAyB,SAA5G,CAAH,EAAiH;CAAC;CAAO;;CAAA+a,QAAAA,MAAM,CAACD,SAAD,CAAN;CAAkB;;CAAAjb,MAAAA,gBAAgB,CAACG,GAAD,CAAhB;;CAAsB,UAAG,OAAOrJ,GAAP,IAAY,QAAf,EAAwB;CAAC2X,QAAAA,SAAS,CAAC3X,GAAD,EAAKmkB,SAAS,IAAED,WAAW,CAACC,SAAD,CAA3B,EAAuC9lB,OAAvC,CAAT;CAAyD,OAAlF,MAAsF;CAAC6lB,QAAAA,WAAW,CAAClkB,GAAD,CAAX;CAAiB;CAAC,KAAju6B;CAAku6BukB,IAAAA,SAAS,EAAC,MAAI;CAAC,aAAOnoB,MAAM,CAACmoB,SAAP,IAAkBnoB,MAAM,CAACooB,YAAzB,IAAuCpoB,MAAM,CAACqoB,eAA9C,IAA+DroB,MAAM,CAACsoB,WAA7E;CAAyF,KAA106B;CAA206BC,IAAAA,OAAO,EAAC,MAAI;CAAC,aAAM,WAASvoB,MAAM,CAACoD,QAAP,CAAgBolB,QAA/B;CAAwC,KAAh46B;CAAi46BC,IAAAA,UAAU,EAAC,EAA546B;CAA+46BC,IAAAA,aAAa,EAAC,WAA756B;CAAy66BC,IAAAA,aAAa,EAAC,CAACxW,KAAD,EAAOnQ,MAAP,EAAcC,OAAd,KAAwB;CAACD,MAAAA,MAAM,GAACA,MAAM,KAAG,MAAI,EAAP,CAAb;;CAAwBC,MAAAA,OAAO,GAACA,OAAO,KAAG,MAAI,EAAP,CAAf;;CAA0B,UAAIkmB,SAAS,GAAC3c,EAAE,CAAC2c,SAAH,EAAd;;CAA6B,UAAG;CAAC,YAAIS,WAAW,GAACT,SAAS,CAACpkB,IAAV,CAAeyH,EAAE,CAAC+c,OAAH,EAAf,EAA4B/c,EAAE,CAACid,UAA/B,CAAhB;CAA2D,OAA/D,CAA+D,OAAMpb,CAAN,EAAQ;CAAC,eAAOpL,OAAO,CAACoL,CAAD,CAAd;CAAkB;;CAAAub,MAAAA,WAAW,CAACC,eAAZ,GAA6B,MAAI;CAACxkB,QAAAA,GAAG,CAAC,aAAD,CAAH;CAAmB,YAAIykB,EAAE,GAACF,WAAW,CAACvZ,MAAnB;CAA0ByZ,QAAAA,EAAE,CAACC,iBAAH,CAAqBvd,EAAE,CAACkd,aAAxB;CAAuC,OAAtH;;CAAwHE,MAAAA,WAAW,CAACI,SAAZ,GAAuB,MAAI;CAAC,YAAIF,EAAE,GAACF,WAAW,CAACvZ,MAAnB;CAA0B,YAAI4Z,WAAW,GAACH,EAAE,CAACG,WAAH,CAAe,CAACzd,EAAE,CAACkd,aAAJ,CAAf,EAAkC,WAAlC,CAAhB;CAA+D,YAAIQ,KAAK,GAACD,WAAW,CAACE,WAAZ,CAAwB3d,EAAE,CAACkd,aAA3B,CAAV;CAAoD,YAAIU,EAAE,GAAC,CAAP;CAAA,YAASC,IAAI,GAAC,CAAd;CAAA,YAAgBC,KAAK,GAACnX,KAAK,CAAC9P,MAA5B;;CAAmC,iBAAS2lB,MAAT,GAAiB;CAAC,cAAGqB,IAAI,IAAE,CAAT,EAAWrnB,MAAM,GAAjB,KAAyBC,OAAO;CAAG;;CAAAkQ,QAAAA,KAAK,CAACuO,OAAN,CAAc/f,IAAI,IAAE;CAAC,cAAI4oB,UAAU,GAACL,KAAK,CAACM,GAAN,CAAUhe,EAAE,CAACuZ,WAAH,CAAepkB,IAAf,EAAqBwe,MAArB,CAA4BvG,QAAtC,EAA+CjY,IAA/C,CAAf;;CAAoE4oB,UAAAA,UAAU,CAACP,SAAX,GAAsB,MAAI;CAACI,YAAAA,EAAE;CAAG,gBAAGA,EAAE,GAACC,IAAH,IAASC,KAAZ,EAAkBtB,MAAM;CAAG,WAA3D;;CAA6DuB,UAAAA,UAAU,CAACtnB,OAAX,GAAoB,MAAI;CAAConB,YAAAA,IAAI;CAAG,gBAAGD,EAAE,GAACC,IAAH,IAASC,KAAZ,EAAkBtB,MAAM;CAAG,WAA3D;CAA6D,SAAnN;CAAqNiB,QAAAA,WAAW,CAAChnB,OAAZ,GAAoBA,OAApB;CAA4B,OAAlf;;CAAof2mB,MAAAA,WAAW,CAAC3mB,OAAZ,GAAoBA,OAApB;CAA4B,KAAjw8B;CAAkw8BwnB,IAAAA,eAAe,EAAC,CAACtX,KAAD,EAAOnQ,MAAP,EAAcC,OAAd,KAAwB;CAACD,MAAAA,MAAM,GAACA,MAAM,KAAG,MAAI,EAAP,CAAb;;CAAwBC,MAAAA,OAAO,GAACA,OAAO,KAAG,MAAI,EAAP,CAAf;;CAA0B,UAAIkmB,SAAS,GAAC3c,EAAE,CAAC2c,SAAH,EAAd;;CAA6B,UAAG;CAAC,YAAIS,WAAW,GAACT,SAAS,CAACpkB,IAAV,CAAeyH,EAAE,CAAC+c,OAAH,EAAf,EAA4B/c,EAAE,CAACid,UAA/B,CAAhB;CAA2D,OAA/D,CAA+D,OAAMpb,CAAN,EAAQ;CAAC,eAAOpL,OAAO,CAACoL,CAAD,CAAd;CAAkB;;CAAAub,MAAAA,WAAW,CAACC,eAAZ,GAA4B5mB,OAA5B;;CAAoC2mB,MAAAA,WAAW,CAACI,SAAZ,GAAuB,MAAI;CAAC,YAAIF,EAAE,GAACF,WAAW,CAACvZ,MAAnB;;CAA0B,YAAG;CAAC,cAAI4Z,WAAW,GAACH,EAAE,CAACG,WAAH,CAAe,CAACzd,EAAE,CAACkd,aAAJ,CAAf,EAAkC,UAAlC,CAAhB;CAA8D,SAAlE,CAAkE,OAAMrb,CAAN,EAAQ;CAACpL,UAAAA,OAAO,CAACoL,CAAD,CAAP;CAAW;CAAO;;CAAA,YAAI6b,KAAK,GAACD,WAAW,CAACE,WAAZ,CAAwB3d,EAAE,CAACkd,aAA3B,CAAV;CAAoD,YAAIU,EAAE,GAAC,CAAP;CAAA,YAASC,IAAI,GAAC,CAAd;CAAA,YAAgBC,KAAK,GAACnX,KAAK,CAAC9P,MAA5B;;CAAmC,iBAAS2lB,MAAT,GAAiB;CAAC,cAAGqB,IAAI,IAAE,CAAT,EAAWrnB,MAAM,GAAjB,KAAyBC,OAAO;CAAG;;CAAAkQ,QAAAA,KAAK,CAACuO,OAAN,CAAc/f,IAAI,IAAE;CAAC,cAAI+oB,UAAU,GAACR,KAAK,CAACjkB,GAAN,CAAUtE,IAAV,CAAf;;CAA+B+oB,UAAAA,UAAU,CAACV,SAAX,GAAsB,MAAI;CAAC,gBAAGxd,EAAE,CAACuZ,WAAH,CAAepkB,IAAf,EAAqBqkB,MAAxB,EAA+B;CAACxZ,cAAAA,EAAE,CAACuM,MAAH,CAAUpX,IAAV;CAAgB;;CAAA6K,YAAAA,EAAE,CAACia,cAAH,CAAkB7U,IAAI,CAACxP,OAAL,CAAaT,IAAb,CAAlB,EAAqCiQ,IAAI,CAACqB,QAAL,CAActR,IAAd,CAArC,EAAyD+oB,UAAU,CAACra,MAApE,EAA2E,IAA3E,EAAgF,IAAhF,EAAqF,IAArF;CAA2F+Z,YAAAA,EAAE;CAAG,gBAAGA,EAAE,GAACC,IAAH,IAASC,KAAZ,EAAkBtB,MAAM;CAAG,WAAtM;;CAAwM0B,UAAAA,UAAU,CAACznB,OAAX,GAAoB,MAAI;CAAConB,YAAAA,IAAI;CAAG,gBAAGD,EAAE,GAACC,IAAH,IAASC,KAAZ,EAAkBtB,MAAM;CAAG,WAA3D;CAA6D,SAAzT;CAA2TiB,QAAAA,WAAW,CAAChnB,OAAZ,GAAoBA,OAApB;CAA4B,OAAtnB;;CAAwnB2mB,MAAAA,WAAW,CAAC3mB,OAAZ,GAAoBA,OAApB;CAA4B,KAA5o+B;CAA6o+B0nB,IAAAA,YAAY,EAAC,MAAI;CAACzkB,MAAAA,KAAK,CAAC,+DAAD,CAAL;CAAuE,KAAtu+B;CAAuu+B0kB,IAAAA,YAAY,EAAC,MAAI;CAAC1kB,MAAAA,KAAK,CAAC,wDAAD,CAAL;CAAgE,KAAzz+B;CAA0z+B2kB,IAAAA,UAAU,EAAC,MAAI;CAAC3kB,MAAAA,KAAK,CAAC,wDAAD,CAAL;CAAgE,KAA14+B;CAA24+B4kB,IAAAA,QAAQ,EAAC,MAAI;CAAC5kB,MAAAA,KAAK,CAAC,qDAAD,CAAL;CAA6D,KAAt9+B;CAAu9+B6R,IAAAA,SAAS,EAAC,MAAI;CAAC7R,MAAAA,KAAK,CAAC,oEAAD,CAAL;CAA4E,KAAlj/B;CAAmj/B6kB,IAAAA,eAAe,EAAC,MAAI;CAAC7kB,MAAAA,KAAK,CAAC,iEAAD,CAAL;CAAyE;CAAjp/B,GAAP;CAA0p/B,MAAI8kB,QAAQ,GAAC;CAACC,IAAAA,gBAAgB,EAAC,CAAlB;CAAoBC,IAAAA,WAAW,EAAC,UAASC,KAAT,EAAexpB,IAAf,EAAoBypB,UAApB,EAA+B;CAAC,UAAGxZ,IAAI,CAACC,KAAL,CAAWlQ,IAAX,CAAH,EAAoB;CAAC,eAAOA,IAAP;CAAY;;CAAA,UAAIqR,GAAJ;;CAAQ,UAAGmY,KAAK,KAAG,CAAC,GAAZ,EAAgB;CAACnY,QAAAA,GAAG,GAACxG,EAAE,CAAC0H,GAAH,EAAJ;CAAa,OAA9B,MAAkC;CAAC,YAAImX,SAAS,GAAC7e,EAAE,CAACuT,SAAH,CAAaoL,KAAb,CAAd;CAAkC,YAAG,CAACE,SAAJ,EAAc,MAAM,IAAI7e,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B/C,QAAAA,GAAG,GAACqY,SAAS,CAAC1pB,IAAd;CAAmB;;CAAA,UAAGA,IAAI,CAAC0B,MAAL,IAAa,CAAhB,EAAkB;CAAC,YAAG,CAAC+nB,UAAJ,EAAe;CAAC,gBAAM,IAAI5e,EAAE,CAACuJ,UAAP,CAAkB,EAAlB,CAAN;CAA4B;;CAAA,eAAO/C,GAAP;CAAW;;CAAA,aAAOpB,IAAI,CAAC0B,KAAL,CAAWN,GAAX,EAAerR,IAAf,CAAP;CAA4B,KAAhV;CAAiV2pB,IAAAA,MAAM,EAAC,UAASxa,IAAT,EAAcnP,IAAd,EAAmB+I,GAAnB,EAAuB;CAAC,UAAG;CAAC,YAAIoY,IAAI,GAAChS,IAAI,CAACnP,IAAD,CAAb;CAAoB,OAAxB,CAAwB,OAAM0M,CAAN,EAAQ;CAAC,YAAGA,CAAC,IAAEA,CAAC,CAAC/M,IAAL,IAAWsQ,IAAI,CAACY,SAAL,CAAe7Q,IAAf,MAAuBiQ,IAAI,CAACY,SAAL,CAAehG,EAAE,CAACyR,OAAH,CAAW5P,CAAC,CAAC/M,IAAb,CAAf,CAArC,EAAwE;CAAC,iBAAM,CAAC,EAAP;CAAU;;CAAA,cAAM+M,CAAN;CAAQ;;CAAAzE,MAAAA,MAAM,CAACc,GAAG,IAAE,CAAN,CAAN,GAAeoY,IAAI,CAACxN,GAApB;CAAwB1L,MAAAA,MAAM,CAACc,GAAG,GAAC,CAAJ,IAAO,CAAR,CAAN,GAAiB,CAAjB;CAAmBd,MAAAA,MAAM,CAACc,GAAG,GAAC,CAAJ,IAAO,CAAR,CAAN,GAAiBoY,IAAI,CAACpI,GAAtB;CAA0B9Q,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAACxK,IAAvB;CAA4B1O,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAACnI,KAAvB;CAA6B/Q,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAAClI,GAAvB;CAA2BhR,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAACjI,GAAvB;CAA2BjR,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAAChN,IAAvB;CAA4BlM,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkB,CAAlB;CAAoBkG,MAAAA,OAAO,GAAC,CAACkS,IAAI,CAAC7Y,IAAL,KAAY,CAAb,GAAgB0G,UAAU,GAACmS,IAAI,CAAC7Y,IAAhB,EAAqB,CAACgD,IAAI,CAACse,GAAL,CAAS5a,UAAT,CAAD,IAAuB,CAAvB,GAAyBA,UAAU,GAAC,CAAX,GAAa,CAAC1D,IAAI,CAAC4H,GAAL,CAAS,CAAC5H,IAAI,CAACue,KAAL,CAAW7a,UAAU,GAAC,UAAtB,CAAV,EAA4C,UAA5C,IAAwD,CAAzD,MAA8D,CAA3E,GAA6E,CAAC,CAAC,CAAC1D,IAAI,CAAC6K,IAAL,CAAU,CAACnH,UAAU,GAAC,EAAE,CAAC,CAACA,UAAF,KAAe,CAAjB,CAAZ,IAAiC,UAA3C,CAAH,KAA4D,CAAlK,GAAoK,CAAzM,EAAR,EAAqN/G,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBkG,OAAO,CAAC,CAAD,CAA9O,EAAkPhH,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBkG,OAAO,CAAC,CAAD,CAA3Q;CAA+QhH,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkB,IAAlB;CAAuBd,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAAC5H,MAAvB;CAA8BtR,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAAChI,KAAL,CAAW2Q,OAAX,KAAqB,GAArB,GAAyB,CAA3C;CAA6C7hB,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkB,CAAlB;CAAoBd,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAAC/H,KAAL,CAAW0Q,OAAX,KAAqB,GAArB,GAAyB,CAA3C;CAA6C7hB,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkB,CAAlB;CAAoBd,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBoY,IAAI,CAAC9H,KAAL,CAAWyQ,OAAX,KAAqB,GAArB,GAAyB,CAA3C;CAA6C7hB,MAAAA,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkB,CAAlB;CAAoBkG,MAAAA,OAAO,GAAC,CAACkS,IAAI,CAACpI,GAAL,KAAW,CAAZ,GAAe/J,UAAU,GAACmS,IAAI,CAACpI,GAAhB,EAAoB,CAACzN,IAAI,CAACse,GAAL,CAAS5a,UAAT,CAAD,IAAuB,CAAvB,GAAyBA,UAAU,GAAC,CAAX,GAAa,CAAC1D,IAAI,CAAC4H,GAAL,CAAS,CAAC5H,IAAI,CAACue,KAAL,CAAW7a,UAAU,GAAC,UAAtB,CAAV,EAA4C,UAA5C,IAAwD,CAAzD,MAA8D,CAA3E,GAA6E,CAAC,CAAC,CAAC1D,IAAI,CAAC6K,IAAL,CAAU,CAACnH,UAAU,GAAC,EAAE,CAAC,CAACA,UAAF,KAAe,CAAjB,CAAZ,IAAiC,UAA3C,CAAH,KAA4D,CAAlK,GAAoK,CAAvM,EAAR,EAAmN/G,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBkG,OAAO,CAAC,CAAD,CAA5O,EAAgPhH,MAAM,CAACc,GAAG,GAAC,EAAJ,IAAQ,CAAT,CAAN,GAAkBkG,OAAO,CAAC,CAAD,CAAzQ;CAA6Q,aAAO,CAAP;CAAS,KAA7+C;CAA8+C8a,IAAAA,OAAO,EAAC,UAASC,IAAT,EAAc/V,MAAd,EAAqB7M,GAArB,EAAyBoT,KAAzB,EAA+BhG,MAA/B,EAAsC;CAAC,UAAItT,MAAM,GAACsF,MAAM,CAAC3E,KAAP,CAAamoB,IAAb,EAAkBA,IAAI,GAAC5iB,GAAvB,CAAX;CAAuCyD,MAAAA,EAAE,CAAC8M,KAAH,CAAS1D,MAAT,EAAgB/S,MAAhB,EAAuBsT,MAAvB,EAA8BpN,GAA9B,EAAkCoT,KAAlC;CAAyC,KAA7mD;CAA8mDyP,IAAAA,OAAO,EAAC,UAASjqB,IAAT,EAAc2W,IAAd,EAAmBhD,GAAnB,EAAuB;CAAC,cAAOgD,IAAI,GAAC,KAAZ;CAAmB,aAAK,KAAL;CAAW,aAAK,IAAL;CAAU,aAAK,KAAL;CAAW,aAAK,IAAL;CAAU,aAAK,KAAL;CAAW;;CAAM;CAAQ,iBAAM,CAAC,EAAP;CAAtF;;CAAgG9L,MAAAA,EAAE,CAACqM,KAAH,CAASlX,IAAT,EAAc2W,IAAd,EAAmBhD,GAAnB;CAAwB,aAAO,CAAP;CAAS,KAA/wD;CAAgxDuW,IAAAA,UAAU,EAAC,UAASlqB,IAAT,EAAc+I,GAAd,EAAkBohB,OAAlB,EAA0B;CAAC,UAAGA,OAAO,IAAE,CAAZ,EAAc,OAAM,CAAC,EAAP;CAAU,UAAIlpB,GAAG,GAAC4J,EAAE,CAACgN,QAAH,CAAY7X,IAAZ,CAAR;CAA0B,UAAIoH,GAAG,GAACkE,IAAI,CAAC4H,GAAL,CAASiX,OAAT,EAAiBhjB,eAAe,CAAClG,GAAD,CAAhC,CAAR;CAA+C,UAAImpB,OAAO,GAAC5hB,KAAK,CAACO,GAAG,GAAC3B,GAAL,CAAjB;CAA2BH,MAAAA,YAAY,CAAChG,GAAD,EAAK8H,GAAL,EAASohB,OAAO,GAAC,CAAjB,CAAZ;CAAgC3hB,MAAAA,KAAK,CAACO,GAAG,GAAC3B,GAAL,CAAL,GAAegjB,OAAf;CAAuB,aAAOhjB,GAAP;CAAW,KAAp/D;CAAq/DijB,IAAAA,QAAQ,EAAC,UAASrqB,IAAT,EAAcsqB,KAAd,EAAoB;CAAC,UAAGA,KAAK,GAAC,CAAC,CAAV,EAAY;CAAC,eAAM,CAAC,EAAP;CAAU;;CAAA,UAAIrT,MAAM,GAACpM,EAAE,CAAC6Q,UAAH,CAAc1b,IAAd,EAAmB;CAACoc,QAAAA,MAAM,EAAC;CAAR,OAAnB,CAAX;CAA6C,UAAIzc,IAAI,GAACsX,MAAM,CAACtX,IAAhB;;CAAqB,UAAG,CAACA,IAAJ,EAAS;CAAC,eAAM,CAAC,EAAP;CAAU;;CAAA,UAAI8d,KAAK,GAAC,EAAV;CAAa,UAAG6M,KAAK,GAAC,CAAT,EAAW7M,KAAK,IAAE,GAAP;CAAW,UAAG6M,KAAK,GAAC,CAAT,EAAW7M,KAAK,IAAE,GAAP;CAAW,UAAG6M,KAAK,GAAC,CAAT,EAAW7M,KAAK,IAAE,GAAP;;CAAW,UAAGA,KAAK,IAAE5S,EAAE,CAAC6S,eAAH,CAAmB/d,IAAnB,EAAwB8d,KAAxB,CAAV,EAAyC;CAAC,eAAM,CAAC,CAAP;CAAS;;CAAA,aAAO,CAAP;CAAS,KAA3wE;CAA4wE8M,IAAAA,OAAO,EAAC,UAAStW,MAAT,EAAgBuW,GAAhB,EAAoBC,MAApB,EAA2BjW,MAA3B,EAAkC;CAAC,UAAIvT,GAAG,GAAC,CAAR;;CAAU,WAAI,IAAI6F,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC2jB,MAAd,EAAqB3jB,CAAC,EAAtB,EAAyB;CAAC,YAAIP,GAAG,GAAC0B,MAAM,CAACuiB,GAAG,IAAE,CAAN,CAAd;CAAuB,YAAIpjB,GAAG,GAACa,MAAM,CAACuiB,GAAG,GAAC,CAAJ,IAAO,CAAR,CAAd;CAAyBA,QAAAA,GAAG,IAAE,CAAL;CAAO,YAAIE,IAAI,GAAC7f,EAAE,CAAC3I,IAAH,CAAQ+R,MAAR,EAAezL,KAAf,EAAqBjC,GAArB,EAAyBa,GAAzB,EAA6BoN,MAA7B,CAAT;CAA8C,YAAGkW,IAAI,GAAC,CAAR,EAAU,OAAM,CAAC,CAAP;CAASzpB,QAAAA,GAAG,IAAEypB,IAAL;CAAU,YAAGA,IAAI,GAACtjB,GAAR,EAAY;CAAM;;CAAA,aAAOnG,GAAP;CAAW,KAA1/E;CAA2/E0pB,IAAAA,QAAQ,EAAC,UAAS1W,MAAT,EAAgBuW,GAAhB,EAAoBC,MAApB,EAA2BjW,MAA3B,EAAkC;CAAC,UAAIvT,GAAG,GAAC,CAAR;;CAAU,WAAI,IAAI6F,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC2jB,MAAd,EAAqB3jB,CAAC,EAAtB,EAAyB;CAAC,YAAIP,GAAG,GAAC0B,MAAM,CAACuiB,GAAG,IAAE,CAAN,CAAd;CAAuB,YAAIpjB,GAAG,GAACa,MAAM,CAACuiB,GAAG,GAAC,CAAJ,IAAO,CAAR,CAAd;CAAyBA,QAAAA,GAAG,IAAE,CAAL;CAAO,YAAIE,IAAI,GAAC7f,EAAE,CAACkK,KAAH,CAASd,MAAT,EAAgBzL,KAAhB,EAAsBjC,GAAtB,EAA0Ba,GAA1B,EAA8BoN,MAA9B,CAAT;CAA+C,YAAGkW,IAAI,GAAC,CAAR,EAAU,OAAM,CAAC,CAAP;CAASzpB,QAAAA,GAAG,IAAEypB,IAAL;CAAU;;CAAA,aAAOzpB,GAAP;CAAW,KAAztF;CAA0tF2pB,IAAAA,OAAO,EAAC5pB,SAAluF;CAA4uFsD,IAAAA,GAAG,EAAC,YAAU;CAAClD,MAAAA,MAAM,CAACioB,QAAQ,CAACuB,OAAT,IAAkB5pB,SAAnB,CAAN;CAAoCqoB,MAAAA,QAAQ,CAACuB,OAAT,IAAkB,CAAlB;CAAoB,UAAI3pB,GAAG,GAACgH,MAAM,CAACohB,QAAQ,CAACuB,OAAT,GAAiB,CAAjB,IAAoB,CAArB,CAAd;CAAsC,aAAO3pB,GAAP;CAAW,KAAp2F;CAAq2F4pB,IAAAA,MAAM,EAAC,UAAStkB,GAAT,EAAa;CAAC,UAAItF,GAAG,GAACqF,YAAY,CAACC,GAAD,CAApB;CAA0B,aAAOtF,GAAP;CAAW,KAA/5F;CAAg6F6pB,IAAAA,eAAe,EAAC,UAASvV,EAAT,EAAY;CAAC,UAAItB,MAAM,GAACpJ,EAAE,CAACuT,SAAH,CAAa7I,EAAb,CAAX;CAA4B,UAAG,CAACtB,MAAJ,EAAW,MAAM,IAAIpJ,EAAE,CAACuJ,UAAP,CAAkB,CAAlB,CAAN;CAA2B,aAAOH,MAAP;CAAc;CAA7gG,GAAb;;CAA4hG,WAAS8W,kBAAT,CAA4BxV,EAA5B,EAA+BzW,GAA/B,EAAmC8rB,OAAnC,EAA2C;CAACvB,IAAAA,QAAQ,CAACuB,OAAT,GAAiBA,OAAjB;;CAAyB,QAAG;CAAC,UAAI3W,MAAM,GAACoV,QAAQ,CAACyB,eAAT,CAAyBvV,EAAzB,CAAX;;CAAwC,cAAOzW,GAAP;CAAY,aAAK,CAAL;CAAO;CAAC,gBAAIsQ,GAAG,GAACia,QAAQ,CAAC/kB,GAAT,EAAR;;CAAuB,gBAAG8K,GAAG,GAAC,CAAP,EAAS;CAAC,qBAAM,CAAC,EAAP;CAAU;;CAAA,gBAAI4b,SAAJ;CAAcA,YAAAA,SAAS,GAACngB,EAAE,CAACwT,YAAH,CAAgBpK,MAAhB,EAAuB7E,GAAvB,CAAV;CAAsC,mBAAO4b,SAAS,CAACzV,EAAjB;CAAoB;;CAAA,aAAK,CAAL;CAAO,aAAK,CAAL;CAAO,iBAAO,CAAP;;CAAS,aAAK,CAAL;CAAO,iBAAOtB,MAAM,CAACuG,KAAd;;CAAoB,aAAK,CAAL;CAAO;CAAC,gBAAIpL,GAAG,GAACia,QAAQ,CAAC/kB,GAAT,EAAR;CAAuB2P,YAAAA,MAAM,CAACuG,KAAP,IAAcpL,GAAd;CAAkB,mBAAO,CAAP;CAAS;;CAAA,aAAK,CAAL;CAAO;CAAC,gBAAIA,GAAG,GAACia,QAAQ,CAAC/kB,GAAT,EAAR;CAAuB,gBAAIkQ,MAAM,GAAC,CAAX;CAAa9M,YAAAA,MAAM,CAAC0H,GAAG,GAACoF,MAAJ,IAAY,CAAb,CAAN,GAAsB,CAAtB;CAAwB,mBAAO,CAAP;CAAS;;CAAA,aAAK,CAAL;CAAO,aAAK,CAAL;CAAO,iBAAO,CAAP;;CAAS,aAAK,EAAL;CAAQ,aAAK,CAAL;CAAO,iBAAM,CAAC,EAAP;;CAAU,aAAK,CAAL;CAAO1E,UAAAA,QAAQ,CAAC,EAAD,CAAR;CAAa,iBAAM,CAAC,CAAP;;CAAS;CAAQ;CAAC,mBAAM,CAAC,EAAP;CAAU;CAAha;CAAka,KAA9c,CAA8c,OAAMpD,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAM,CAACA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAASmN,iBAAT,CAA2BzB,KAA3B,EAAiCxpB,IAAjC,EAAsCwa,KAAtC,EAA4CoQ,OAA5C,EAAoD;CAACvB,IAAAA,QAAQ,CAACuB,OAAT,GAAiBA,OAAjB;;CAAyB,QAAG;CAAC5qB,MAAAA,IAAI,GAACqpB,QAAQ,CAACwB,MAAT,CAAgB7qB,IAAhB,CAAL;CAA2BA,MAAAA,IAAI,GAACqpB,QAAQ,CAACE,WAAT,CAAqBC,KAArB,EAA2BxpB,IAA3B,CAAL;CAAsC,UAAI2W,IAAI,GAACiU,OAAO,GAACvB,QAAQ,CAAC/kB,GAAT,EAAD,GAAgB,CAAhC;CAAkC,aAAOuG,EAAE,CAACzH,IAAH,CAAQpD,IAAR,EAAawa,KAAb,EAAmB7D,IAAnB,EAAyBpB,EAAhC;CAAmC,KAA1I,CAA0I,OAAM7I,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAM,CAACA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAASoN,wBAAT,CAAkCC,aAAlC,EAAgDle,IAAhD,EAAqD3E,IAArD,EAA0D8iB,QAA1D,EAAmEC,QAAnE,EAA4E;;CAAE,WAASC,gBAAT,CAA0BhjB,IAA1B,EAA+B;CAAC,YAAOA,IAAP;CAAa,WAAK,CAAL;CAAO,eAAO,CAAP;;CAAS,WAAK,CAAL;CAAO,eAAO,CAAP;;CAAS,WAAK,CAAL;CAAO,eAAO,CAAP;;CAAS,WAAK,CAAL;CAAO,eAAO,CAAP;;CAAS;CAAQ,cAAM,IAAIkK,SAAJ,CAAc,wBAAsBlK,IAApC,CAAN;CAArF;CAAsI;;CAAA,WAASijB,qBAAT,GAAgC;CAAC,QAAIC,KAAK,GAAC,IAAI/Z,KAAJ,CAAU,GAAV,CAAV;;CAAyB,SAAI,IAAI3K,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC,GAAd,EAAkB,EAAEA,CAApB,EAAsB;CAAC0kB,MAAAA,KAAK,CAAC1kB,CAAD,CAAL,GAASd,MAAM,CAACC,YAAP,CAAoBa,CAApB,CAAT;CAAgC;;CAAA2kB,IAAAA,gBAAgB,GAACD,KAAjB;CAAuB;;CAAA,MAAIC,gBAAgB,GAACzqB,SAArB;;CAA+B,WAAS0qB,gBAAT,CAA0BnlB,GAA1B,EAA8B;CAAC,QAAItF,GAAG,GAAC,EAAR;CAAW,QAAI0qB,CAAC,GAACplB,GAAN;;CAAU,WAAMC,MAAM,CAACmlB,CAAD,CAAZ,EAAgB;CAAC1qB,MAAAA,GAAG,IAAEwqB,gBAAgB,CAACjlB,MAAM,CAACmlB,CAAC,EAAF,CAAP,CAArB;CAAmC;;CAAA,WAAO1qB,GAAP;CAAW;;CAAA,MAAI2qB,oBAAoB,GAAC,EAAzB;CAA4B,MAAIC,eAAe,GAAC,EAApB;CAAuB,MAAIC,gBAAgB,GAAC,EAArB;CAAwB,MAAIC,MAAM,GAAC,EAAX;CAAc,MAAIC,MAAM,GAAC,EAAX;;CAAc,WAASC,qBAAT,CAA+Bhf,IAA/B,EAAoC;CAAC,QAAGjM,SAAS,KAAGiM,IAAf,EAAoB;CAAC,aAAM,UAAN;CAAiB;;CAAAA,IAAAA,IAAI,GAACA,IAAI,CAACtL,OAAL,CAAa,gBAAb,EAA8B,GAA9B,CAAL;CAAwC,QAAIQ,CAAC,GAAC8K,IAAI,CAACjG,UAAL,CAAgB,CAAhB,CAAN;;CAAyB,QAAG7E,CAAC,IAAE4pB,MAAH,IAAW5pB,CAAC,IAAE6pB,MAAjB,EAAwB;CAAC,aAAM,MAAI/e,IAAV;CAAe;;CAAA,WAAOA,IAAP;CAAY;;CAAA,WAASif,mBAAT,CAA6Bjf,IAA7B,EAAkCkf,IAAlC,EAAuC;CAAClf,IAAAA,IAAI,GAACgf,qBAAqB,CAAChf,IAAD,CAA1B;CAAiC,WAAO,IAAImf,QAAJ,CAAa,MAAb,EAAoB,qBAAmBnf,IAAnB,GAAwB,QAAxB,GAAiC,mBAAjC,GAAqD,2CAArD,GAAiG,MAArH,EAA6Hkf,IAA7H,CAAP;CAA0I;;CAAA,WAASE,WAAT,CAAqBC,aAArB,EAAmCC,SAAnC,EAA6C;CAAC,QAAIC,UAAU,GAACN,mBAAmB,CAACK,SAAD,EAAW,UAASxtB,OAAT,EAAiB;CAAC,WAAKkO,IAAL,GAAUsf,SAAV;CAAoB,WAAKxtB,OAAL,GAAaA,OAAb;CAAqB,UAAI8Q,KAAK,GAAC,IAAIhQ,KAAJ,CAAUd,OAAV,EAAmB8Q,KAA7B;;CAAmC,UAAGA,KAAK,KAAG7O,SAAX,EAAqB;CAAC,aAAK6O,KAAL,GAAW,KAAKzJ,QAAL,KAAgB,IAAhB,GAAqByJ,KAAK,CAAClO,OAAN,CAAc,oBAAd,EAAmC,EAAnC,CAAhC;CAAuE;CAAC,KAAvM,CAAlC;CAA2O6qB,IAAAA,UAAU,CAAC/iB,SAAX,GAAqBxK,MAAM,CAACqhB,MAAP,CAAcgM,aAAa,CAAC7iB,SAA5B,CAArB;CAA4D+iB,IAAAA,UAAU,CAAC/iB,SAAX,CAAqBka,WAArB,GAAiC6I,UAAjC;;CAA4CA,IAAAA,UAAU,CAAC/iB,SAAX,CAAqBrD,QAArB,GAA8B,YAAU;CAAC,UAAG,KAAKrH,OAAL,KAAeiC,SAAlB,EAA4B;CAAC,eAAO,KAAKiM,IAAZ;CAAiB,OAA9C,MAAkD;CAAC,eAAO,KAAKA,IAAL,GAAU,IAAV,GAAe,KAAKlO,OAA3B;CAAmC;CAAC,KAAhI;;CAAiI,WAAOytB,UAAP;CAAkB;;CAAA,MAAIC,YAAY,GAACzrB,SAAjB;;CAA2B,WAAS0rB,iBAAT,CAA2B3tB,OAA3B,EAAmC;CAAC,UAAM,IAAI0tB,YAAJ,CAAiB1tB,OAAjB,CAAN;CAAgC;;CAAA,MAAI4tB,aAAa,GAAC3rB,SAAlB;;CAA4B,WAAS4rB,kBAAT,CAA4B7tB,OAA5B,EAAoC;CAAC,UAAM,IAAI4tB,aAAJ,CAAkB5tB,OAAlB,CAAN;CAAiC;;CAAA,WAAS8tB,6BAAT,CAAuCC,OAAvC,EAA+CC,cAA/C,EAA8DC,iBAA9D,EAAgF;CAACF,IAAAA,OAAO,CAAC/M,OAAR,CAAgB,UAASC,IAAT,EAAc;CAAC8L,MAAAA,gBAAgB,CAAC9L,IAAD,CAAhB,GAAuB+M,cAAvB;CAAsC,KAArE;;CAAuE,aAASE,UAAT,CAAoBC,cAApB,EAAmC;CAAC,UAAIC,gBAAgB,GAACH,iBAAiB,CAACE,cAAD,CAAtC;;CAAuD,UAAGC,gBAAgB,CAACzrB,MAAjB,KAA0BorB,OAAO,CAACprB,MAArC,EAA4C;CAACkrB,QAAAA,kBAAkB,CAAC,iCAAD,CAAlB;CAAsD;;CAAA,WAAI,IAAI9lB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACgmB,OAAO,CAACprB,MAAtB,EAA6B,EAAEoF,CAA/B,EAAiC;CAACsmB,QAAAA,YAAY,CAACN,OAAO,CAAChmB,CAAD,CAAR,EAAYqmB,gBAAgB,CAACrmB,CAAD,CAA5B,CAAZ;CAA6C;CAAC;;CAAA,QAAIomB,cAAc,GAAC,IAAIzb,KAAJ,CAAUsb,cAAc,CAACrrB,MAAzB,CAAnB;CAAoD,QAAI2rB,iBAAiB,GAAC,EAAtB;CAAyB,QAAIC,UAAU,GAAC,CAAf;CAAiBP,IAAAA,cAAc,CAAChN,OAAf,CAAuB,CAACwN,EAAD,EAAIzmB,CAAJ,KAAQ;CAAC,UAAG+kB,eAAe,CAAC7R,cAAhB,CAA+BuT,EAA/B,CAAH,EAAsC;CAACL,QAAAA,cAAc,CAACpmB,CAAD,CAAd,GAAkB+kB,eAAe,CAAC0B,EAAD,CAAjC;CAAsC,OAA7E,MAAiF;CAACF,QAAAA,iBAAiB,CAACha,IAAlB,CAAuBka,EAAvB;;CAA2B,YAAG,CAAC3B,oBAAoB,CAAC5R,cAArB,CAAoCuT,EAApC,CAAJ,EAA4C;CAAC3B,UAAAA,oBAAoB,CAAC2B,EAAD,CAApB,GAAyB,EAAzB;CAA4B;;CAAA3B,QAAAA,oBAAoB,CAAC2B,EAAD,CAApB,CAAyBla,IAAzB,CAA8B,MAAI;CAAC6Z,UAAAA,cAAc,CAACpmB,CAAD,CAAd,GAAkB+kB,eAAe,CAAC0B,EAAD,CAAjC;CAAsC,YAAED,UAAF;;CAAa,cAAGA,UAAU,KAAGD,iBAAiB,CAAC3rB,MAAlC,EAAyC;CAACurB,YAAAA,UAAU,CAACC,cAAD,CAAV;CAA2B;CAAC,SAA5J;CAA8J;CAAC,KAArX;;CAAuX,QAAG,MAAIG,iBAAiB,CAAC3rB,MAAzB,EAAgC;CAACurB,MAAAA,UAAU,CAACC,cAAD,CAAV;CAA2B;CAAC;;CAAA,WAASE,YAAT,CAAsBI,OAAtB,EAA8BC,kBAA9B,EAA4D;CAAA,QAAXC,OAAW,uEAAH,EAAG;;CAAC,QAAG,EAAE,oBAAmBD,kBAArB,CAAH,EAA4C;CAAC,YAAM,IAAIjb,SAAJ,CAAc,yDAAd,CAAN;CAA+E;;CAAA,QAAIvF,IAAI,GAACwgB,kBAAkB,CAACxgB,IAA5B;;CAAiC,QAAG,CAACugB,OAAJ,EAAY;CAACd,MAAAA,iBAAiB,CAAC,WAASzf,IAAT,GAAc,+CAAf,CAAjB;CAAiF;;CAAA,QAAG4e,eAAe,CAAC7R,cAAhB,CAA+BwT,OAA/B,CAAH,EAA2C;CAAC,UAAGE,OAAO,CAACC,4BAAX,EAAwC;CAAC;CAAO,OAAhD,MAAoD;CAACjB,QAAAA,iBAAiB,CAAC,2BAAyBzf,IAAzB,GAA8B,SAA/B,CAAjB;CAA2D;CAAC;;CAAA4e,IAAAA,eAAe,CAAC2B,OAAD,CAAf,GAAyBC,kBAAzB;CAA4C,WAAO3B,gBAAgB,CAAC0B,OAAD,CAAvB;;CAAiC,QAAG5B,oBAAoB,CAAC5R,cAArB,CAAoCwT,OAApC,CAAH,EAAgD;CAAC,UAAIte,SAAS,GAAC0c,oBAAoB,CAAC4B,OAAD,CAAlC;CAA4C,aAAO5B,oBAAoB,CAAC4B,OAAD,CAA3B;CAAqCte,MAAAA,SAAS,CAAC6Q,OAAV,CAAkB5U,EAAE,IAAEA,EAAE,EAAxB;CAA4B;CAAC;;CAAA,WAASyiB,sBAAT,CAAgCJ,OAAhC,EAAwCvgB,IAAxC,EAA6C3E,IAA7C,EAAkDulB,SAAlD,EAA4DC,UAA5D,EAAuE;CAAC,QAAIpjB,KAAK,GAAC4gB,gBAAgB,CAAChjB,IAAD,CAA1B;CAAiC2E,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4BmgB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACvgB,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAe,UAAS8gB,EAAT,EAAY;CAAC,eAAM,CAAC,CAACA,EAAR;CAAW,OAAlD;CAAmD,oBAAa,UAASC,WAAT,EAAqBC,CAArB,EAAuB;CAAC,eAAOA,CAAC,GAACJ,SAAD,GAAWC,UAAnB;CAA8B,OAAtH;CAAuH,wBAAiB,CAAxI;CAA0I,8BAAuB,UAASI,OAAT,EAAiB;CAAC,YAAIxnB,IAAJ;;CAAS,YAAG4B,IAAI,KAAG,CAAV,EAAY;CAAC5B,UAAAA,IAAI,GAAC8B,KAAL;CAAW,SAAxB,MAA6B,IAAGF,IAAI,KAAG,CAAV,EAAY;CAAC5B,UAAAA,IAAI,GAACgB,MAAL;CAAY,SAAzB,MAA8B,IAAGY,IAAI,KAAG,CAAV,EAAY;CAAC5B,UAAAA,IAAI,GAACuB,MAAL;CAAY,SAAzB,MAA6B;CAAC,gBAAM,IAAIuK,SAAJ,CAAc,gCAA8BvF,IAA5C,CAAN;CAAwD;;CAAA,eAAO,KAAK,cAAL,EAAqBvG,IAAI,CAACwnB,OAAO,IAAExjB,KAAV,CAAzB,CAAP;CAAkD,OAA/X;CAAgYyjB,MAAAA,kBAAkB,EAAC;CAAnZ,KAAT,CAAZ;CAA+a;;CAAA,WAASC,qBAAT,CAA+BC,KAA/B,EAAqC;CAAC,QAAG,EAAE,gBAAgBC,WAAlB,CAAH,EAAkC;CAAC,aAAO,KAAP;CAAa;;CAAA,QAAG,EAAED,KAAK,YAAYC,WAAnB,CAAH,EAAmC;CAAC,aAAO,KAAP;CAAa;;CAAA,QAAIC,SAAS,GAAC,KAAKC,EAAL,CAAQC,OAAR,CAAgBC,eAA9B;CAA8C,QAAIC,IAAI,GAAC,KAAKH,EAAL,CAAQjoB,GAAjB;CAAqB,QAAIqoB,UAAU,GAACP,KAAK,CAACG,EAAN,CAASC,OAAT,CAAiBC,eAAhC;CAAgD,QAAIG,KAAK,GAACR,KAAK,CAACG,EAAN,CAASjoB,GAAnB;;CAAuB,WAAMgoB,SAAS,CAACO,SAAhB,EAA0B;CAACH,MAAAA,IAAI,GAACJ,SAAS,CAACQ,MAAV,CAAiBJ,IAAjB,CAAL;CAA4BJ,MAAAA,SAAS,GAACA,SAAS,CAACO,SAApB;CAA8B;;CAAA,WAAMF,UAAU,CAACE,SAAjB,EAA2B;CAACD,MAAAA,KAAK,GAACD,UAAU,CAACG,MAAX,CAAkBF,KAAlB,CAAN;CAA+BD,MAAAA,UAAU,GAACA,UAAU,CAACE,SAAtB;CAAgC;;CAAA,WAAOP,SAAS,KAAGK,UAAZ,IAAwBD,IAAI,KAAGE,KAAtC;CAA4C;;CAAA,WAASG,0BAAT,CAAoCf,CAApC,EAAsC;CAAC,WAAM;CAAC5R,MAAAA,KAAK,EAAC4R,CAAC,CAAC5R,KAAT;CAAe4S,MAAAA,eAAe,EAAChB,CAAC,CAACgB,eAAjC;CAAiDC,MAAAA,uBAAuB,EAACjB,CAAC,CAACiB,uBAA3E;CAAmG3oB,MAAAA,GAAG,EAAC0nB,CAAC,CAAC1nB,GAAzG;CAA6GkoB,MAAAA,OAAO,EAACR,CAAC,CAACQ,OAAvH;CAA+HU,MAAAA,QAAQ,EAAClB,CAAC,CAACkB,QAA1I;CAAmJC,MAAAA,YAAY,EAACnB,CAAC,CAACmB;CAAlK,KAAN;CAAsL;;CAAA,WAASC,2BAAT,CAAqCrK,GAArC,EAAyC;CAAC,aAASsK,mBAAT,CAA6BC,MAA7B,EAAoC;CAAC,aAAOA,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBC,eAAlB,CAAkCzhB,IAAzC;CAA8C;;CAAAyf,IAAAA,iBAAiB,CAAC4C,mBAAmB,CAACtK,GAAD,CAAnB,GAAyB,2BAA1B,CAAjB;CAAwE;;CAAA,MAAIwK,oBAAoB,GAAC,KAAzB;;CAA+B,WAASC,eAAT,CAAyBF,MAAzB,EAAgC;;CAAE,WAASG,aAAT,CAAuBlB,EAAvB,EAA0B;CAAC,QAAGA,EAAE,CAACW,QAAN,EAAe;CAACX,MAAAA,EAAE,CAACY,YAAH,CAAgBO,aAAhB,CAA8BnB,EAAE,CAACW,QAAjC;CAA2C,KAA3D,MAA+D;CAACX,MAAAA,EAAE,CAACC,OAAH,CAAWC,eAAX,CAA2BiB,aAA3B,CAAyCnB,EAAE,CAACjoB,GAA5C;CAAiD;CAAC;;CAAA,WAASqpB,kBAAT,CAA4BpB,EAA5B,EAA+B;CAACA,IAAAA,EAAE,CAACnS,KAAH,CAAStM,KAAT,IAAgB,CAAhB;CAAkB,QAAI8f,QAAQ,GAAC,MAAIrB,EAAE,CAACnS,KAAH,CAAStM,KAA1B;;CAAgC,QAAG8f,QAAH,EAAY;CAACH,MAAAA,aAAa,CAAClB,EAAD,CAAb;CAAkB;CAAC;;CAAA,WAASsB,eAAT,CAAyBvpB,GAAzB,EAA6BwpB,QAA7B,EAAsCC,YAAtC,EAAmD;CAAC,QAAGD,QAAQ,KAAGC,YAAd,EAA2B;CAAC,aAAOzpB,GAAP;CAAW;;CAAA,QAAGvF,SAAS,KAAGgvB,YAAY,CAAClB,SAA5B,EAAsC;CAAC,aAAO,IAAP;CAAY;;CAAA,QAAImB,EAAE,GAACH,eAAe,CAACvpB,GAAD,EAAKwpB,QAAL,EAAcC,YAAY,CAAClB,SAA3B,CAAtB;;CAA4D,QAAGmB,EAAE,KAAG,IAAR,EAAa;CAAC,aAAO,IAAP;CAAY;;CAAA,WAAOD,YAAY,CAACE,QAAb,CAAsBD,EAAtB,CAAP;CAAiC;;CAAA,MAAIE,kBAAkB,GAAC,EAAvB;;CAA0B,WAASC,yBAAT,GAAoC;CAAC,WAAOnxB,MAAM,CAACmhB,IAAP,CAAYiQ,mBAAZ,EAAiC3uB,MAAxC;CAA+C;;CAAA,WAAS4uB,yBAAT,GAAoC;CAAC,QAAIL,EAAE,GAAC,EAAP;;CAAU,SAAI,IAAIM,CAAR,IAAaF,mBAAb,EAAiC;CAAC,UAAGA,mBAAmB,CAACrW,cAApB,CAAmCuW,CAAnC,CAAH,EAAyC;CAACN,QAAAA,EAAE,CAAC5c,IAAH,CAAQgd,mBAAmB,CAACE,CAAD,CAA3B;CAAgC;CAAC;;CAAA,WAAON,EAAP;CAAU;;CAAA,MAAIO,aAAa,GAAC,EAAlB;;CAAqB,WAASC,mBAAT,GAA8B;CAAC,WAAMD,aAAa,CAAC9uB,MAApB,EAA2B;CAAC,UAAIsjB,GAAG,GAACwL,aAAa,CAAChR,GAAd,EAAR;CAA4BwF,MAAAA,GAAG,CAACwJ,EAAJ,CAAOS,eAAP,GAAuB,KAAvB;CAA6BjK,MAAAA,GAAG,CAAC,QAAD,CAAH;CAAgB;CAAC;;CAAA,MAAI0L,aAAa,GAAC1vB,SAAlB;;CAA4B,WAAS2vB,gBAAT,CAA0B9J,EAA1B,EAA6B;CAAC6J,IAAAA,aAAa,GAAC7J,EAAd;;CAAiB,QAAG2J,aAAa,CAAC9uB,MAAd,IAAsBgvB,aAAzB,EAAuC;CAACA,MAAAA,aAAa,CAACD,mBAAD,CAAb;CAAmC;CAAC;;CAAA,WAASG,WAAT,GAAsB;CAACtyB,IAAAA,MAAM,CAAC,2BAAD,CAAN,GAAoC8xB,yBAApC;CAA8D9xB,IAAAA,MAAM,CAAC,2BAAD,CAAN,GAAoCgyB,yBAApC;CAA8DhyB,IAAAA,MAAM,CAAC,qBAAD,CAAN,GAA8BmyB,mBAA9B;CAAkDnyB,IAAAA,MAAM,CAAC,kBAAD,CAAN,GAA2BqyB,gBAA3B;CAA4C;;CAAA,MAAIN,mBAAmB,GAAC,EAAxB;;CAA2B,WAASQ,gBAAT,CAA0BC,MAA1B,EAAiCvqB,GAAjC,EAAqC;CAAC,QAAGA,GAAG,KAAGvF,SAAT,EAAmB;CAAC0rB,MAAAA,iBAAiB,CAAC,6BAAD,CAAjB;CAAiD;;CAAA,WAAMoE,MAAM,CAAChC,SAAb,EAAuB;CAACvoB,MAAAA,GAAG,GAACuqB,MAAM,CAAC/B,MAAP,CAAcxoB,GAAd,CAAJ;CAAuBuqB,MAAAA,MAAM,GAACA,MAAM,CAAChC,SAAd;CAAwB;;CAAA,WAAOvoB,GAAP;CAAW;;CAAA,WAASwqB,oBAAT,CAA8BD,MAA9B,EAAqCvqB,GAArC,EAAyC;CAACA,IAAAA,GAAG,GAACsqB,gBAAgB,CAACC,MAAD,EAAQvqB,GAAR,CAApB;CAAiC,WAAO8pB,mBAAmB,CAAC9pB,GAAD,CAA1B;CAAgC;;CAAA,WAASyqB,eAAT,CAAyBvnB,SAAzB,EAAmCwnB,MAAnC,EAA0C;CAAC,QAAG,CAACA,MAAM,CAACxC,OAAR,IAAiB,CAACwC,MAAM,CAAC1qB,GAA5B,EAAgC;CAACqmB,MAAAA,kBAAkB,CAAC,0CAAD,CAAlB;CAA+D;;CAAA,QAAIsE,eAAe,GAAC,CAAC,CAACD,MAAM,CAAC7B,YAA7B;CAA0C,QAAI+B,WAAW,GAAC,CAAC,CAACF,MAAM,CAAC9B,QAAzB;;CAAkC,QAAG+B,eAAe,KAAGC,WAArB,EAAiC;CAACvE,MAAAA,kBAAkB,CAAC,kDAAD,CAAlB;CAAuE;;CAAAqE,IAAAA,MAAM,CAAC5U,KAAP,GAAa;CAACtM,MAAAA,KAAK,EAAC;CAAP,KAAb;CAAuB,WAAOqhB,eAAe,CAACnyB,MAAM,CAACqhB,MAAP,CAAc7W,SAAd,EAAwB;CAAC+kB,MAAAA,EAAE,EAAC;CAACze,QAAAA,KAAK,EAACkhB;CAAP;CAAJ,KAAxB,CAAD,CAAtB;CAAqE;;CAAA,WAASI,8BAAT,CAAwC9qB,GAAxC,EAA4C;CAAC,QAAI+qB,UAAU,GAAC,KAAKC,UAAL,CAAgBhrB,GAAhB,CAAf;;CAAoC,QAAG,CAAC+qB,UAAJ,EAAe;CAAC,WAAKE,UAAL,CAAgBjrB,GAAhB;CAAqB,aAAO,IAAP;CAAY;;CAAA,QAAIknB,kBAAkB,GAACsD,oBAAoB,CAAC,KAAKrC,eAAN,EAAsB4C,UAAtB,CAA3C;;CAA6E,QAAGtwB,SAAS,KAAGysB,kBAAf,EAAkC;CAAC,UAAG,MAAIA,kBAAkB,CAACe,EAAnB,CAAsBnS,KAAtB,CAA4BtM,KAAnC,EAAyC;CAAC0d,QAAAA,kBAAkB,CAACe,EAAnB,CAAsBjoB,GAAtB,GAA0B+qB,UAA1B;CAAqC7D,QAAAA,kBAAkB,CAACe,EAAnB,CAAsBW,QAAtB,GAA+B5oB,GAA/B;CAAmC,eAAOknB,kBAAkB,CAAC,OAAD,CAAlB,EAAP;CAAqC,OAAvJ,MAA2J;CAAC,YAAIwC,EAAE,GAACxC,kBAAkB,CAAC,OAAD,CAAlB,EAAP;CAAqC,aAAK+D,UAAL,CAAgBjrB,GAAhB;CAAqB,eAAO0pB,EAAP;CAAU;CAAC;;CAAA,aAASwB,iBAAT,GAA4B;CAAC,UAAG,KAAKC,cAAR,EAAuB;CAAC,eAAOV,eAAe,CAAC,KAAKtC,eAAL,CAAqBiD,iBAAtB,EAAwC;CAAClD,UAAAA,OAAO,EAAC,KAAKmD,WAAd;CAA0BrrB,UAAAA,GAAG,EAAC+qB,UAA9B;CAAyClC,UAAAA,YAAY,EAAC,IAAtD;CAA2DD,UAAAA,QAAQ,EAAC5oB;CAApE,SAAxC,CAAtB;CAAwI,OAAhK,MAAoK;CAAC,eAAOyqB,eAAe,CAAC,KAAKtC,eAAL,CAAqBiD,iBAAtB,EAAwC;CAAClD,UAAAA,OAAO,EAAC,IAAT;CAAcloB,UAAAA,GAAG,EAACA;CAAlB,SAAxC,CAAtB;CAAsF;CAAC;;CAAA,QAAIsrB,UAAU,GAAC,KAAKnD,eAAL,CAAqBoD,aAArB,CAAmCR,UAAnC,CAAf;CAA8D,QAAIS,uBAAuB,GAAC5B,kBAAkB,CAAC0B,UAAD,CAA9C;;CAA2D,QAAG,CAACE,uBAAJ,EAA4B;CAAC,aAAON,iBAAiB,CAAC/f,IAAlB,CAAuB,IAAvB,CAAP;CAAoC;;CAAA,QAAIsgB,MAAJ;;CAAW,QAAG,KAAKC,OAAR,EAAgB;CAACD,MAAAA,MAAM,GAACD,uBAAuB,CAACG,gBAA/B;CAAgD,KAAjE,MAAqE;CAACF,MAAAA,MAAM,GAACD,uBAAuB,CAACI,WAA/B;CAA2C;;CAAA,QAAIC,EAAE,GAACtC,eAAe,CAACwB,UAAD,EAAY,KAAK5C,eAAjB,EAAiCsD,MAAM,CAACtD,eAAxC,CAAtB;;CAA+E,QAAG0D,EAAE,KAAG,IAAR,EAAa;CAAC,aAAOX,iBAAiB,CAAC/f,IAAlB,CAAuB,IAAvB,CAAP;CAAoC;;CAAA,QAAG,KAAKggB,cAAR,EAAuB;CAAC,aAAOV,eAAe,CAACgB,MAAM,CAACtD,eAAP,CAAuBiD,iBAAxB,EAA0C;CAAClD,QAAAA,OAAO,EAACuD,MAAT;CAAgBzrB,QAAAA,GAAG,EAAC6rB,EAApB;CAAuBhD,QAAAA,YAAY,EAAC,IAApC;CAAyCD,QAAAA,QAAQ,EAAC5oB;CAAlD,OAA1C,CAAtB;CAAwH,KAAhJ,MAAoJ;CAAC,aAAOyqB,eAAe,CAACgB,MAAM,CAACtD,eAAP,CAAuBiD,iBAAxB,EAA0C;CAAClD,QAAAA,OAAO,EAACuD,MAAT;CAAgBzrB,QAAAA,GAAG,EAAC6rB;CAApB,OAA1C,CAAtB;CAAyF;CAAC;;CAAA,WAAShB,eAAT,CAAyB7B,MAAzB,EAAgC;CAAC,QAAG,gBAAc,OAAO8C,oBAAxB,EAA6C;CAACjB,MAAAA,eAAe,GAAE7B,MAAM,IAAEA,MAAzB;;CAAiC,aAAOA,MAAP;CAAc;;CAAAC,IAAAA,oBAAoB,GAAC,IAAI6C,oBAAJ,CAAyBlkB,IAAI,IAAE;CAAC1P,MAAAA,OAAO,CAACG,IAAR,CAAauP,IAAI,CAACmkB,WAAL,CAAiBziB,KAAjB,CAAuBlO,OAAvB,CAA+B,UAA/B,EAA0C,EAA1C,CAAb;CAA4DiuB,MAAAA,kBAAkB,CAACzhB,IAAI,CAACqgB,EAAN,CAAlB;CAA4B,KAAxH,CAArB;;CAA+I4C,IAAAA,eAAe,GAAE7B,MAAM,IAAE;CAAC,UAAIf,EAAE,GAACe,MAAM,CAACf,EAAd;CAAiB,UAAI2C,WAAW,GAAC,CAAC,CAAC3C,EAAE,CAACW,QAArB;;CAA8B,UAAGgC,WAAH,EAAe;CAAC,YAAIhjB,IAAI,GAAC;CAACqgB,UAAAA,EAAE,EAACA;CAAJ,SAAT;CAAiB,YAAI+D,GAAG,GAAC/D,EAAE,CAACC,OAAH,CAAWC,eAAnB;CAAmCvgB,QAAAA,IAAI,CAACmkB,WAAL,GAAiB,IAAIzyB,KAAJ,CAAU,wCAAsC0yB,GAAG,CAACtlB,IAA1C,GAA+C,MAA/C,GAAsDuhB,EAAE,CAACjoB,GAAH,CAAOH,QAAP,CAAgB,EAAhB,CAAtD,GAA0E,MAA1E,GAAiF,iHAAjF,GAAmM,sFAAnM,GAA0R,sBAApS,CAAjB;;CAA6U,YAAG,uBAAsBvG,KAAzB,EAA+B;CAACA,UAAAA,KAAK,CAAC2yB,iBAAN,CAAwBrkB,IAAI,CAACmkB,WAA7B,EAAyCjB,8BAAzC;CAAyE;;CAAA7B,QAAAA,oBAAoB,CAAC9b,QAArB,CAA8B6b,MAA9B,EAAqCphB,IAArC,EAA0CohB,MAA1C;CAAkD;;CAAA,aAAOA,MAAP;CAAc,KAAnoB;;CAAqoBE,IAAAA,eAAe,GAAEF,MAAM,IAAEC,oBAAoB,CAACiD,UAArB,CAAgClD,MAAhC,CAAzB;;CAAkE,WAAO6B,eAAe,CAAC7B,MAAD,CAAtB;CAA+B;;CAAA,WAASmD,iBAAT,GAA4B;CAAC,QAAG,CAAC,KAAKlE,EAAL,CAAQjoB,GAAZ,EAAgB;CAAC8oB,MAAAA,2BAA2B,CAAC,IAAD,CAA3B;CAAkC;;CAAA,QAAG,KAAKb,EAAL,CAAQU,uBAAX,EAAmC;CAAC,WAAKV,EAAL,CAAQnS,KAAR,CAActM,KAAd,IAAqB,CAArB;CAAuB,aAAO,IAAP;CAAY,KAAvE,MAA2E;CAAC,UAAI4iB,KAAK,GAACvB,eAAe,CAACnyB,MAAM,CAACqhB,MAAP,CAAcrhB,MAAM,CAAC2zB,cAAP,CAAsB,IAAtB,CAAd,EAA0C;CAACpE,QAAAA,EAAE,EAAC;CAACze,UAAAA,KAAK,EAACif,0BAA0B,CAAC,KAAKR,EAAN;CAAjC;CAAJ,OAA1C,CAAD,CAAzB;CAAuHmE,MAAAA,KAAK,CAACnE,EAAN,CAASnS,KAAT,CAAetM,KAAf,IAAsB,CAAtB;CAAwB4iB,MAAAA,KAAK,CAACnE,EAAN,CAASS,eAAT,GAAyB,KAAzB;CAA+B,aAAO0D,KAAP;CAAa;CAAC;;CAAA,WAASE,kBAAT,GAA6B;CAAC,QAAG,CAAC,KAAKrE,EAAL,CAAQjoB,GAAZ,EAAgB;CAAC8oB,MAAAA,2BAA2B,CAAC,IAAD,CAA3B;CAAkC;;CAAA,QAAG,KAAKb,EAAL,CAAQS,eAAR,IAAyB,CAAC,KAAKT,EAAL,CAAQU,uBAArC,EAA6D;CAACxC,MAAAA,iBAAiB,CAAC,uCAAD,CAAjB;CAA2D;;CAAA+C,IAAAA,eAAe,CAAC,IAAD,CAAf;CAAsBG,IAAAA,kBAAkB,CAAC,KAAKpB,EAAN,CAAlB;;CAA4B,QAAG,CAAC,KAAKA,EAAL,CAAQU,uBAAZ,EAAoC;CAAC,WAAKV,EAAL,CAAQW,QAAR,GAAiBnuB,SAAjB;CAA2B,WAAKwtB,EAAL,CAAQjoB,GAAR,GAAYvF,SAAZ;CAAsB;CAAC;;CAAA,WAAS8xB,qBAAT,GAAgC;CAAC,WAAM,CAAC,KAAKtE,EAAL,CAAQjoB,GAAf;CAAmB;;CAAA,WAASwsB,uBAAT,GAAkC;CAAC,QAAG,CAAC,KAAKvE,EAAL,CAAQjoB,GAAZ,EAAgB;CAAC8oB,MAAAA,2BAA2B,CAAC,IAAD,CAA3B;CAAkC;;CAAA,QAAG,KAAKb,EAAL,CAAQS,eAAR,IAAyB,CAAC,KAAKT,EAAL,CAAQU,uBAArC,EAA6D;CAACxC,MAAAA,iBAAiB,CAAC,uCAAD,CAAjB;CAA2D;;CAAA8D,IAAAA,aAAa,CAACnd,IAAd,CAAmB,IAAnB;;CAAyB,QAAGmd,aAAa,CAAC9uB,MAAd,KAAuB,CAAvB,IAA0BgvB,aAA7B,EAA2C;CAACA,MAAAA,aAAa,CAACD,mBAAD,CAAb;CAAmC;;CAAA,SAAKjC,EAAL,CAAQS,eAAR,GAAwB,IAAxB;CAA6B,WAAO,IAAP;CAAY;;CAAA,WAAS+D,gBAAT,GAA2B;CAAC1E,IAAAA,WAAW,CAAC7kB,SAAZ,CAAsB,WAAtB,IAAmC2kB,qBAAnC;CAAyDE,IAAAA,WAAW,CAAC7kB,SAAZ,CAAsB,OAAtB,IAA+BipB,iBAA/B;CAAiDpE,IAAAA,WAAW,CAAC7kB,SAAZ,CAAsB,QAAtB,IAAgCopB,kBAAhC;CAAmDvE,IAAAA,WAAW,CAAC7kB,SAAZ,CAAsB,WAAtB,IAAmCqpB,qBAAnC;CAAyDxE,IAAAA,WAAW,CAAC7kB,SAAZ,CAAsB,aAAtB,IAAqCspB,uBAArC;CAA6D;;CAAA,WAASzE,WAAT,GAAsB;;CAAE,WAAS2E,mBAAT,CAA6BC,KAA7B,EAAmCC,UAAnC,EAA8CC,SAA9C,EAAwD;CAAC,QAAGpyB,SAAS,KAAGkyB,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAjC,EAA+C;CAAC,UAAIC,QAAQ,GAACJ,KAAK,CAACC,UAAD,CAAlB;;CAA+BD,MAAAA,KAAK,CAACC,UAAD,CAAL,GAAkB,YAAU;CAAC,YAAG,CAACD,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlB,CAAgCrZ,cAAhC,CAA+C1M,SAAS,CAAC5L,MAAzD,CAAJ,EAAqE;CAACgrB,UAAAA,iBAAiB,CAAC,eAAa0G,SAAb,GAAuB,gDAAvB,GAAwE9lB,SAAS,CAAC5L,MAAlF,GAAyF,sBAAzF,GAAgHwxB,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlI,GAAgJ,IAAjJ,CAAjB;CAAwK;;CAAA,eAAOH,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlB,CAAgC/lB,SAAS,CAAC5L,MAA1C,EAAkD2L,KAAlD,CAAwD,IAAxD,EAA6DC,SAA7D,CAAP;CAA+E,OAA1V;;CAA2V4lB,MAAAA,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlB,GAAgC,EAAhC;CAAmCH,MAAAA,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlB,CAAgCC,QAAQ,CAACC,QAAzC,IAAmDD,QAAnD;CAA4D;CAAC;;CAAA,WAASE,kBAAT,CAA4BvmB,IAA5B,EAAiC8C,KAAjC,EAAuC0jB,YAAvC,EAAoD;CAAC,QAAGn1B,MAAM,CAAC0b,cAAP,CAAsB/M,IAAtB,CAAH,EAA+B;CAAC,UAAGjM,SAAS,KAAGyyB,YAAZ,IAA0BzyB,SAAS,KAAG1C,MAAM,CAAC2O,IAAD,CAAN,CAAaomB,aAAzB,IAAwCryB,SAAS,KAAG1C,MAAM,CAAC2O,IAAD,CAAN,CAAaomB,aAAb,CAA2BI,YAA3B,CAAjF,EAA0H;CAAC/G,QAAAA,iBAAiB,CAAC,kCAAgCzf,IAAhC,GAAqC,SAAtC,CAAjB;CAAkE;;CAAAgmB,MAAAA,mBAAmB,CAAC30B,MAAD,EAAQ2O,IAAR,EAAaA,IAAb,CAAnB;;CAAsC,UAAG3O,MAAM,CAAC0b,cAAP,CAAsByZ,YAAtB,CAAH,EAAuC;CAAC/G,QAAAA,iBAAiB,CAAC,yFAAuF+G,YAAvF,GAAoG,IAArG,CAAjB;CAA4H;;CAAAn1B,MAAAA,MAAM,CAAC2O,IAAD,CAAN,CAAaomB,aAAb,CAA2BI,YAA3B,IAAyC1jB,KAAzC;CAA+C,KAAtd,MAA0d;CAACzR,MAAAA,MAAM,CAAC2O,IAAD,CAAN,GAAa8C,KAAb;;CAAmB,UAAG/O,SAAS,KAAGyyB,YAAf,EAA4B;CAACn1B,QAAAA,MAAM,CAAC2O,IAAD,CAAN,CAAawmB,YAAb,GAA0BA,YAA1B;CAAuC;CAAC;CAAC;;CAAA,WAASC,eAAT,CAAyBzmB,IAAzB,EAA8B0W,WAA9B,EAA0CgO,iBAA1C,EAA4DhC,aAA5D,EAA0Eb,SAA1E,EAAoFgD,aAApF,EAAkG/C,MAAlG,EAAyGmB,QAAzG,EAAkH;CAAC,SAAKjjB,IAAL,GAAUA,IAAV;CAAe,SAAK0W,WAAL,GAAiBA,WAAjB;CAA6B,SAAKgO,iBAAL,GAAuBA,iBAAvB;CAAyC,SAAKhC,aAAL,GAAmBA,aAAnB;CAAiC,SAAKb,SAAL,GAAeA,SAAf;CAAyB,SAAKgD,aAAL,GAAmBA,aAAnB;CAAiC,SAAK/C,MAAL,GAAYA,MAAZ;CAAmB,SAAKmB,QAAL,GAAcA,QAAd;CAAuB,SAAKyD,oBAAL,GAA0B,EAA1B;CAA6B;;CAAA,WAASC,aAAT,CAAuBrtB,GAAvB,EAA2BwpB,QAA3B,EAAoCC,YAApC,EAAiD;CAAC,WAAMD,QAAQ,KAAGC,YAAjB,EAA8B;CAAC,UAAG,CAACD,QAAQ,CAAChB,MAAb,EAAoB;CAACrC,QAAAA,iBAAiB,CAAC,kCAAgCsD,YAAY,CAAC/iB,IAA7C,GAAkD,uBAAlD,GAA0E8iB,QAAQ,CAAC9iB,IAApF,CAAjB;CAA2G;;CAAA1G,MAAAA,GAAG,GAACwpB,QAAQ,CAAChB,MAAT,CAAgBxoB,GAAhB,CAAJ;CAAyBwpB,MAAAA,QAAQ,GAACA,QAAQ,CAACjB,SAAlB;CAA4B;;CAAA,WAAOvoB,GAAP;CAAW;;CAAA,WAASstB,mCAAT,CAA6C7F,WAA7C,EAAyDuB,MAAzD,EAAgE;CAAC,QAAGA,MAAM,KAAG,IAAZ,EAAiB;CAAC,UAAG,KAAKuE,WAAR,EAAoB;CAACpH,QAAAA,iBAAiB,CAAC,yBAAuB,KAAKzf,IAA7B,CAAjB;CAAoD;;CAAA,aAAO,CAAP;CAAS;;CAAA,QAAG,CAACsiB,MAAM,CAACf,EAAX,EAAc;CAAC9B,MAAAA,iBAAiB,CAAC,kBAAgBqH,YAAY,CAACxE,MAAD,CAA5B,GAAqC,SAArC,GAA+C,KAAKtiB,IAArD,CAAjB;CAA4E;;CAAA,QAAG,CAACsiB,MAAM,CAACf,EAAP,CAAUjoB,GAAd,EAAkB;CAACmmB,MAAAA,iBAAiB,CAAC,qDAAmD,KAAKzf,IAAzD,CAAjB;CAAgF;;CAAA,QAAI+mB,WAAW,GAACzE,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBC,eAAlC;CAAkD,QAAInoB,GAAG,GAACqtB,aAAa,CAACrE,MAAM,CAACf,EAAP,CAAUjoB,GAAX,EAAeytB,WAAf,EAA2B,KAAKtF,eAAhC,CAArB;CAAsE,WAAOnoB,GAAP;CAAW;;CAAA,WAAS0tB,wBAAT,CAAkCjG,WAAlC,EAA8CuB,MAA9C,EAAqD;CAAC,QAAIhpB,GAAJ;;CAAQ,QAAGgpB,MAAM,KAAG,IAAZ,EAAiB;CAAC,UAAG,KAAKuE,WAAR,EAAoB;CAACpH,QAAAA,iBAAiB,CAAC,yBAAuB,KAAKzf,IAA7B,CAAjB;CAAoD;;CAAA,UAAG,KAAKykB,cAAR,EAAuB;CAACnrB,QAAAA,GAAG,GAAC,KAAK2tB,cAAL,EAAJ;;CAA0B,YAAGlG,WAAW,KAAG,IAAjB,EAAsB;CAACA,UAAAA,WAAW,CAAC3a,IAAZ,CAAiB,KAAKsc,aAAtB,EAAoCppB,GAApC;CAAyC;;CAAA,eAAOA,GAAP;CAAW,OAA7H,MAAiI;CAAC,eAAO,CAAP;CAAS;CAAC;;CAAA,QAAG,CAACgpB,MAAM,CAACf,EAAX,EAAc;CAAC9B,MAAAA,iBAAiB,CAAC,kBAAgBqH,YAAY,CAACxE,MAAD,CAA5B,GAAqC,SAArC,GAA+C,KAAKtiB,IAArD,CAAjB;CAA4E;;CAAA,QAAG,CAACsiB,MAAM,CAACf,EAAP,CAAUjoB,GAAd,EAAkB;CAACmmB,MAAAA,iBAAiB,CAAC,qDAAmD,KAAKzf,IAAzD,CAAjB;CAAgF;;CAAA,QAAG,CAAC,KAAKglB,OAAN,IAAe1C,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBwD,OAApC,EAA4C;CAACvF,MAAAA,iBAAiB,CAAC,sCAAoC6C,MAAM,CAACf,EAAP,CAAUY,YAAV,GAAuBG,MAAM,CAACf,EAAP,CAAUY,YAAV,CAAuBniB,IAA9C,GAAmDsiB,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBxhB,IAAzG,IAA+G,qBAA/G,GAAqI,KAAKA,IAA3I,CAAjB;CAAkK;;CAAA,QAAI+mB,WAAW,GAACzE,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBC,eAAlC;CAAkDnoB,IAAAA,GAAG,GAACqtB,aAAa,CAACrE,MAAM,CAACf,EAAP,CAAUjoB,GAAX,EAAeytB,WAAf,EAA2B,KAAKtF,eAAhC,CAAjB;;CAAkE,QAAG,KAAKgD,cAAR,EAAuB;CAAC,UAAG1wB,SAAS,KAAGuuB,MAAM,CAACf,EAAP,CAAUW,QAAzB,EAAkC;CAACzC,QAAAA,iBAAiB,CAAC,iDAAD,CAAjB;CAAqE;;CAAA,cAAO,KAAKyH,aAAZ;CAA2B,aAAK,CAAL;CAAO,cAAG5E,MAAM,CAACf,EAAP,CAAUY,YAAV,KAAyB,IAA5B,EAAiC;CAAC7oB,YAAAA,GAAG,GAACgpB,MAAM,CAACf,EAAP,CAAUW,QAAd;CAAuB,WAAzD,MAA6D;CAACzC,YAAAA,iBAAiB,CAAC,sCAAoC6C,MAAM,CAACf,EAAP,CAAUY,YAAV,GAAuBG,MAAM,CAACf,EAAP,CAAUY,YAAV,CAAuBniB,IAA9C,GAAmDsiB,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBxhB,IAAzG,IAA+G,qBAA/G,GAAqI,KAAKA,IAA3I,CAAjB;CAAkK;;CAAA;;CAAM,aAAK,CAAL;CAAO1G,UAAAA,GAAG,GAACgpB,MAAM,CAACf,EAAP,CAAUW,QAAd;CAAuB;;CAAM,aAAK,CAAL;CAAO,cAAGI,MAAM,CAACf,EAAP,CAAUY,YAAV,KAAyB,IAA5B,EAAiC;CAAC7oB,YAAAA,GAAG,GAACgpB,MAAM,CAACf,EAAP,CAAUW,QAAd;CAAuB,WAAzD,MAA6D;CAAC,gBAAIiF,YAAY,GAAC7E,MAAM,CAAC,OAAD,CAAN,EAAjB;CAAmChpB,YAAAA,GAAG,GAAC,KAAK8tB,QAAL,CAAc9tB,GAAd,EAAkB+tB,KAAK,CAACC,QAAN,CAAe,YAAU;CAACH,cAAAA,YAAY,CAAC,QAAD,CAAZ;CAAyB,aAAnD,CAAlB,CAAJ;;CAA4E,gBAAGpG,WAAW,KAAG,IAAjB,EAAsB;CAACA,cAAAA,WAAW,CAAC3a,IAAZ,CAAiB,KAAKsc,aAAtB,EAAoCppB,GAApC;CAAyC;CAAC;;CAAA;;CAAM;CAAQmmB,UAAAA,iBAAiB,CAAC,6BAAD,CAAjB;CAA/iB;CAAimB;;CAAA,WAAOnmB,GAAP;CAAW;;CAAA,WAASiuB,sCAAT,CAAgDxG,WAAhD,EAA4DuB,MAA5D,EAAmE;CAAC,QAAGA,MAAM,KAAG,IAAZ,EAAiB;CAAC,UAAG,KAAKuE,WAAR,EAAoB;CAACpH,QAAAA,iBAAiB,CAAC,yBAAuB,KAAKzf,IAA7B,CAAjB;CAAoD;;CAAA,aAAO,CAAP;CAAS;;CAAA,QAAG,CAACsiB,MAAM,CAACf,EAAX,EAAc;CAAC9B,MAAAA,iBAAiB,CAAC,kBAAgBqH,YAAY,CAACxE,MAAD,CAA5B,GAAqC,SAArC,GAA+C,KAAKtiB,IAArD,CAAjB;CAA4E;;CAAA,QAAG,CAACsiB,MAAM,CAACf,EAAP,CAAUjoB,GAAd,EAAkB;CAACmmB,MAAAA,iBAAiB,CAAC,qDAAmD,KAAKzf,IAAzD,CAAjB;CAAgF;;CAAA,QAAGsiB,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBwD,OAArB,EAA6B;CAACvF,MAAAA,iBAAiB,CAAC,qCAAmC6C,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBxhB,IAArD,GAA0D,qBAA1D,GAAgF,KAAKA,IAAtF,CAAjB;CAA6G;;CAAA,QAAI+mB,WAAW,GAACzE,MAAM,CAACf,EAAP,CAAUC,OAAV,CAAkBC,eAAlC;CAAkD,QAAInoB,GAAG,GAACqtB,aAAa,CAACrE,MAAM,CAACf,EAAP,CAAUjoB,GAAX,EAAeytB,WAAf,EAA2B,KAAKtF,eAAhC,CAArB;CAAsE,WAAOnoB,GAAP;CAAW;;CAAA,WAASkuB,0BAAT,CAAoCvG,OAApC,EAA4C;CAAC,WAAO,KAAK,cAAL,EAAqBvlB,OAAO,CAACulB,OAAO,IAAE,CAAV,CAA5B,CAAP;CAAiD;;CAAA,WAASwG,4BAAT,CAAsCnuB,GAAtC,EAA0C;CAAC,QAAG,KAAKouB,aAAR,EAAsB;CAACpuB,MAAAA,GAAG,GAAC,KAAKouB,aAAL,CAAmBpuB,GAAnB,CAAJ;CAA4B;;CAAA,WAAOA,GAAP;CAAW;;CAAA,WAASquB,4BAAT,CAAsCruB,GAAtC,EAA0C;CAAC,QAAG,KAAKopB,aAAR,EAAsB;CAAC,WAAKA,aAAL,CAAmBppB,GAAnB;CAAwB;CAAC;;CAAA,WAASsuB,8BAAT,CAAwCtF,MAAxC,EAA+C;CAAC,QAAGA,MAAM,KAAG,IAAZ,EAAiB;CAACA,MAAAA,MAAM,CAAC,QAAD,CAAN;CAAmB;CAAC;;CAAA,WAASuF,sBAAT,GAAiC;CAACC,IAAAA,iBAAiB,CAACtrB,SAAlB,CAA4B8nB,UAA5B,GAAuCmD,4BAAvC;CAAoEK,IAAAA,iBAAiB,CAACtrB,SAAlB,CAA4B+nB,UAA5B,GAAuCoD,4BAAvC;CAAoEG,IAAAA,iBAAiB,CAACtrB,SAAlB,CAA4B,gBAA5B,IAA8C,CAA9C;CAAgDsrB,IAAAA,iBAAiB,CAACtrB,SAAlB,CAA4B,sBAA5B,IAAoDgrB,0BAApD;CAA+EM,IAAAA,iBAAiB,CAACtrB,SAAlB,CAA4B,cAA5B,IAA4CorB,8BAA5C;CAA2EE,IAAAA,iBAAiB,CAACtrB,SAAlB,CAA4B,cAA5B,IAA4C4nB,8BAA5C;CAA2E;;CAAA,WAAS0D,iBAAT,CAA2B9nB,IAA3B,EAAgCyhB,eAAhC,EAAgDoF,WAAhD,EAA4D7B,OAA5D,EAAoEP,cAApE,EAAmFE,WAAnF,EAA+FuC,aAA/F,EAA6GQ,aAA7G,EAA2HT,cAA3H,EAA0IG,QAA1I,EAAmJ1E,aAAnJ,EAAiK;CAAC,SAAK1iB,IAAL,GAAUA,IAAV;CAAe,SAAKyhB,eAAL,GAAqBA,eAArB;CAAqC,SAAKoF,WAAL,GAAiBA,WAAjB;CAA6B,SAAK7B,OAAL,GAAaA,OAAb;CAAqB,SAAKP,cAAL,GAAoBA,cAApB;CAAmC,SAAKE,WAAL,GAAiBA,WAAjB;CAA6B,SAAKuC,aAAL,GAAmBA,aAAnB;CAAiC,SAAKQ,aAAL,GAAmBA,aAAnB;CAAiC,SAAKT,cAAL,GAAoBA,cAApB;CAAmC,SAAKG,QAAL,GAAcA,QAAd;CAAuB,SAAK1E,aAAL,GAAmBA,aAAnB;;CAAiC,QAAG,CAAC+B,cAAD,IAAiBhD,eAAe,CAACI,SAAhB,KAA4B9tB,SAAhD,EAA0D;CAAC,UAAGixB,OAAH,EAAW;CAAC,aAAK,YAAL,IAAmB4B,mCAAnB;CAAuD,aAAK1F,kBAAL,GAAwB,IAAxB;CAA6B,OAAhG,MAAoG;CAAC,aAAK,YAAL,IAAmBqG,sCAAnB;CAA0D,aAAKrG,kBAAL,GAAwB,IAAxB;CAA6B;CAAC,KAAxP,MAA4P;CAAC,WAAK,YAAL,IAAmB8F,wBAAnB;CAA4C;CAAC;;CAAA,WAASe,mBAAT,CAA6B/nB,IAA7B,EAAkC8C,KAAlC,EAAwC0jB,YAAxC,EAAqD;CAAC,QAAG,CAACn1B,MAAM,CAAC0b,cAAP,CAAsB/M,IAAtB,CAAJ,EAAgC;CAAC2f,MAAAA,kBAAkB,CAAC,qCAAD,CAAlB;CAA0D;;CAAA,QAAG5rB,SAAS,KAAG1C,MAAM,CAAC2O,IAAD,CAAN,CAAaomB,aAAzB,IAAwCryB,SAAS,KAAGyyB,YAAvD,EAAoE;CAACn1B,MAAAA,MAAM,CAAC2O,IAAD,CAAN,CAAaomB,aAAb,CAA2BI,YAA3B,IAAyC1jB,KAAzC;CAA+C,KAApH,MAAwH;CAACzR,MAAAA,MAAM,CAAC2O,IAAD,CAAN,GAAa8C,KAAb;CAAmBzR,MAAAA,MAAM,CAAC2O,IAAD,CAAN,CAAasmB,QAAb,GAAsBE,YAAtB;CAAmC;CAAC;;CAAA,WAASwB,aAAT,CAAuBC,GAAvB,EAA2B3uB,GAA3B,EAA+B4uB,IAA/B,EAAoC;CAAC/zB,IAAAA,MAAM,CAAC,aAAW8zB,GAAX,IAAkB52B,MAAnB,EAA0B,mDAAiD42B,GAAjD,GAAqD,GAA/E,CAAN;;CAA0F,QAAGC,IAAI,IAAEA,IAAI,CAACzzB,MAAd,EAAqB;CAACN,MAAAA,MAAM,CAAC+zB,IAAI,CAACzzB,MAAL,KAAcwzB,GAAG,CAACE,SAAJ,CAAc,CAAd,EAAiBzzB,OAAjB,CAAyB,IAAzB,EAA8B,IAA9B,EAAoCD,MAAnD,CAAN;CAAiE,KAAvF,MAA2F;CAACN,MAAAA,MAAM,CAAC8zB,GAAG,CAACxzB,MAAJ,IAAY,CAAb,CAAN;CAAsB;;CAAA,QAAIS,CAAC,GAAC7D,MAAM,CAAC,aAAW42B,GAAZ,CAAZ;CAA6B,WAAOC,IAAI,IAAEA,IAAI,CAACzzB,MAAX,GAAkBS,CAAC,CAACkL,KAAF,CAAQ,IAAR,EAAa,CAAC9G,GAAD,EAAM+M,MAAN,CAAa6hB,IAAb,CAAb,CAAlB,GAAmDhzB,CAAC,CAACuP,IAAF,CAAO,IAAP,EAAYnL,GAAZ,CAA1D;CAA2E;;CAAA,WAAS8uB,OAAT,CAAiBH,GAAjB,EAAqB3uB,GAArB,EAAyB4uB,IAAzB,EAA8B;CAAC,QAAGD,GAAG,CAAC1f,QAAJ,CAAa,GAAb,CAAH,EAAqB;CAAC,aAAOyf,aAAa,CAACC,GAAD,EAAK3uB,GAAL,EAAS4uB,IAAT,CAApB;CAAmC;;CAAA/zB,IAAAA,MAAM,CAACiO,iBAAiB,CAAC9I,GAAD,CAAlB,EAAwB,qCAAmCA,GAA3D,CAAN;CAAsE,WAAO8I,iBAAiB,CAAC9I,GAAD,CAAjB,CAAuB8G,KAAvB,CAA6B,IAA7B,EAAkC8nB,IAAlC,CAAP;CAA+C;;CAAA,WAASG,YAAT,CAAsBJ,GAAtB,EAA0B3uB,GAA1B,EAA8B;CAACnF,IAAAA,MAAM,CAAC8zB,GAAG,CAAC1f,QAAJ,CAAa,GAAb,CAAD,EAAmB,kDAAnB,CAAN;CAA6E,QAAI+f,QAAQ,GAAC,EAAb;CAAgB,WAAO,YAAU;CAACA,MAAAA,QAAQ,CAAC7zB,MAAT,GAAgB,CAAhB;CAAkBzC,MAAAA,MAAM,CAACC,MAAP,CAAcq2B,QAAd,EAAuBjoB,SAAvB;CAAkC,aAAO+nB,OAAO,CAACH,GAAD,EAAK3uB,GAAL,EAASgvB,QAAT,CAAd;CAAiC,KAAvG;CAAwG;;CAAA,WAASC,uBAAT,CAAiCC,SAAjC,EAA2CC,WAA3C,EAAuD;CAACD,IAAAA,SAAS,GAAC/J,gBAAgB,CAAC+J,SAAD,CAA1B;;CAAsC,aAASE,aAAT,GAAwB;CAAC,UAAGF,SAAS,CAACjgB,QAAV,CAAmB,GAAnB,CAAH,EAA2B;CAAC,eAAO8f,YAAY,CAACG,SAAD,EAAWC,WAAX,CAAnB;CAA2C;;CAAA,aAAOrmB,iBAAiB,CAACqmB,WAAD,CAAxB;CAAsC;;CAAA,QAAIE,EAAE,GAACD,aAAa,EAApB;;CAAuB,QAAG,OAAOC,EAAP,IAAW,UAAd,EAAyB;CAAClJ,MAAAA,iBAAiB,CAAC,6CAA2C+I,SAA3C,GAAqD,IAArD,GAA0DC,WAA3D,CAAjB;CAAyF;;CAAA,WAAOE,EAAP;CAAU;;CAAA,MAAIC,gBAAgB,GAAC70B,SAArB;;CAA+B,WAAS80B,WAAT,CAAqB9V,IAArB,EAA0B;CAAC,QAAIzZ,GAAG,GAACwvB,cAAc,CAAC/V,IAAD,CAAtB;;CAA6B,QAAIiQ,EAAE,GAACvE,gBAAgB,CAACnlB,GAAD,CAAvB;;CAA6ByvB,IAAAA,KAAK,CAACzvB,GAAD,CAAL;;CAAW,WAAO0pB,EAAP;CAAU;;CAAA,WAASgG,qBAAT,CAA+Bl3B,OAA/B,EAAuCm3B,KAAvC,EAA6C;CAAC,QAAIC,YAAY,GAAC,EAAjB;CAAoB,QAAIC,IAAI,GAAC,EAAT;;CAAY,aAASC,KAAT,CAAerW,IAAf,EAAoB;CAAC,UAAGoW,IAAI,CAACpW,IAAD,CAAP,EAAc;CAAC;CAAO;;CAAA,UAAG6L,eAAe,CAAC7L,IAAD,CAAlB,EAAyB;CAAC;CAAO;;CAAA,UAAG8L,gBAAgB,CAAC9L,IAAD,CAAnB,EAA0B;CAAC8L,QAAAA,gBAAgB,CAAC9L,IAAD,CAAhB,CAAuBD,OAAvB,CAA+BsW,KAA/B;CAAsC;CAAO;;CAAAF,MAAAA,YAAY,CAAC9iB,IAAb,CAAkB2M,IAAlB;CAAwBoW,MAAAA,IAAI,CAACpW,IAAD,CAAJ,GAAW,IAAX;CAAgB;;CAAAkW,IAAAA,KAAK,CAACnW,OAAN,CAAcsW,KAAd;CAAqB,UAAM,IAAIR,gBAAJ,CAAqB92B,OAAO,GAAC,IAAR,GAAao3B,YAAY,CAACG,GAAb,CAAiBR,WAAjB,EAA8B3kB,IAA9B,CAAmC,CAAC,IAAD,CAAnC,CAAlC,CAAN;CAAoF;;CAAA,WAASolB,uBAAT,CAAiC/I,OAAjC,EAAyCgJ,cAAzC,EAAwDC,mBAAxD,EAA4EC,gBAA5E,EAA6FC,sBAA7F,EAAoH7E,aAApH,EAAkI8E,eAAlI,EAAkJ7H,MAAlJ,EAAyJ8H,iBAAzJ,EAA2K3G,QAA3K,EAAoLjjB,IAApL,EAAyL6pB,mBAAzL,EAA6MnH,aAA7M,EAA2N;CAAC1iB,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4B6kB,IAAAA,aAAa,GAAC0D,uBAAuB,CAACmB,sBAAD,EAAwB7E,aAAxB,CAArC;;CAA4E,QAAG/C,MAAH,EAAU;CAACA,MAAAA,MAAM,GAACyG,uBAAuB,CAACoB,eAAD,EAAiB7H,MAAjB,CAA9B;CAAuD;;CAAA,QAAGmB,QAAH,EAAY;CAACA,MAAAA,QAAQ,GAACsF,uBAAuB,CAACqB,iBAAD,EAAmB3G,QAAnB,CAAhC;CAA6D;;CAAAP,IAAAA,aAAa,GAAC6F,uBAAuB,CAACsB,mBAAD,EAAqBnH,aAArB,CAArC;CAAyE,QAAIoH,iBAAiB,GAAC9K,qBAAqB,CAAChf,IAAD,CAA3C;CAAkDumB,IAAAA,kBAAkB,CAACuD,iBAAD,EAAmB,YAAU;CAACd,MAAAA,qBAAqB,CAAC,sBAAoBhpB,IAApB,GAAyB,uBAA1B,EAAkD,CAACypB,gBAAD,CAAlD,CAArB;CAA2F,KAAzH,CAAlB;CAA6I7J,IAAAA,6BAA6B,CAAC,CAACW,OAAD,EAASgJ,cAAT,EAAwBC,mBAAxB,CAAD,EAA8CC,gBAAgB,GAAC,CAACA,gBAAD,CAAD,GAAoB,EAAlF,EAAqF,UAASM,IAAT,EAAc;CAACA,MAAAA,IAAI,GAACA,IAAI,CAAC,CAAD,CAAT;CAAa,UAAIlI,SAAJ;CAAc,UAAImI,aAAJ;;CAAkB,UAAGP,gBAAH,EAAoB;CAAC5H,QAAAA,SAAS,GAACkI,IAAI,CAACtI,eAAf;CAA+BuI,QAAAA,aAAa,GAACnI,SAAS,CAAC6C,iBAAxB;CAA0C,OAA9F,MAAkG;CAACsF,QAAAA,aAAa,GAAC3I,WAAW,CAAC7kB,SAA1B;CAAoC;;CAAA,UAAIka,WAAW,GAACuI,mBAAmB,CAAC6K,iBAAD,EAAmB,YAAU;CAAC,YAAG93B,MAAM,CAAC2zB,cAAP,CAAsB,IAAtB,MAA8BjB,iBAAjC,EAAmD;CAAC,gBAAM,IAAIlF,YAAJ,CAAiB,4BAA0Bxf,IAA3C,CAAN;CAAuD;;CAAA,YAAGjM,SAAS,KAAG0tB,eAAe,CAACwI,gBAA/B,EAAgD;CAAC,gBAAM,IAAIzK,YAAJ,CAAiBxf,IAAI,GAAC,gCAAtB,CAAN;CAA8D;;CAAA,YAAIkf,IAAI,GAACuC,eAAe,CAACwI,gBAAhB,CAAiC5pB,SAAS,CAAC5L,MAA3C,CAAT;;CAA4D,YAAGV,SAAS,KAAGmrB,IAAf,EAAoB;CAAC,gBAAM,IAAIM,YAAJ,CAAiB,6BAA2Bxf,IAA3B,GAAgC,sCAAhC,GAAuEK,SAAS,CAAC5L,MAAjF,GAAwF,gBAAxF,GAAyGzC,MAAM,CAACmhB,IAAP,CAAYsO,eAAe,CAACwI,gBAA5B,EAA8C9wB,QAA9C,EAAzG,GAAkK,uBAAnL,CAAN;CAAkN;;CAAA,eAAO+lB,IAAI,CAAC9e,KAAL,CAAW,IAAX,EAAgBC,SAAhB,CAAP;CAAkC,OAA7jB,CAAnC;CAAkmB,UAAIqkB,iBAAiB,GAAC1yB,MAAM,CAACqhB,MAAP,CAAc2W,aAAd,EAA4B;CAACtT,QAAAA,WAAW,EAAC;CAAC5T,UAAAA,KAAK,EAAC4T;CAAP;CAAb,OAA5B,CAAtB;CAAqFA,MAAAA,WAAW,CAACla,SAAZ,GAAsBkoB,iBAAtB;CAAwC,UAAIjD,eAAe,GAAC,IAAIgF,eAAJ,CAAoBzmB,IAApB,EAAyB0W,WAAzB,EAAqCgO,iBAArC,EAAuDhC,aAAvD,EAAqEb,SAArE,EAA+EgD,aAA/E,EAA6F/C,MAA7F,EAAoGmB,QAApG,CAApB;CAAkI,UAAIiH,kBAAkB,GAAC,IAAIpC,iBAAJ,CAAsB9nB,IAAtB,EAA2ByhB,eAA3B,EAA2C,IAA3C,EAAgD,KAAhD,EAAsD,KAAtD,CAAvB;CAAoF,UAAI0I,gBAAgB,GAAC,IAAIrC,iBAAJ,CAAsB9nB,IAAI,GAAC,GAA3B,EAA+ByhB,eAA/B,EAA+C,KAA/C,EAAqD,KAArD,EAA2D,KAA3D,CAArB;CAAuF,UAAI2I,qBAAqB,GAAC,IAAItC,iBAAJ,CAAsB9nB,IAAI,GAAC,SAA3B,EAAqCyhB,eAArC,EAAqD,KAArD,EAA2D,IAA3D,EAAgE,KAAhE,CAA1B;CAAiGyB,MAAAA,kBAAkB,CAAC3C,OAAD,CAAlB,GAA4B;CAAC2E,QAAAA,WAAW,EAACiF,gBAAb;CAA8BlF,QAAAA,gBAAgB,EAACmF;CAA/C,OAA5B;CAAkGrC,MAAAA,mBAAmB,CAAC+B,iBAAD,EAAmBpT,WAAnB,CAAnB;CAAmD,aAAM,CAACwT,kBAAD,EAAoBC,gBAApB,EAAqCC,qBAArC,CAAN;CAAkE,KAA5lD,CAA7B;CAA2nD;;CAAA,WAASC,mBAAT,CAA6Bjb,KAA7B,EAAmCkb,YAAnC,EAAgD;CAAC,QAAIC,KAAK,GAAC,EAAV;;CAAa,SAAI,IAAI1wB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACuV,KAAd,EAAoBvV,CAAC,EAArB,EAAwB;CAAC0wB,MAAAA,KAAK,CAACnkB,IAAN,CAAWpL,MAAM,CAAC,CAACsvB,YAAY,IAAE,CAAf,IAAkBzwB,CAAnB,CAAjB;CAAwC;;CAAA,WAAO0wB,KAAP;CAAa;;CAAA,WAASC,cAAT,CAAwBzJ,WAAxB,EAAoC;CAAC,WAAMA,WAAW,CAACtsB,MAAlB,EAAyB;CAAC,UAAI6E,GAAG,GAACynB,WAAW,CAACxO,GAAZ,EAAR;CAA0B,UAAIkY,GAAG,GAAC1J,WAAW,CAACxO,GAAZ,EAAR;CAA0BkY,MAAAA,GAAG,CAACnxB,GAAD,CAAH;CAAS;CAAC;;CAAA,WAASoxB,mCAAT,CAA6CC,YAA7C,EAA0DrE,QAA1D,EAAmEsE,eAAnE,EAAmFC,gBAAnF,EAAoGC,OAApG,EAA4G7D,cAA5G,EAA2H;CAAC9yB,IAAAA,MAAM,CAACmyB,QAAQ,GAAC,CAAV,CAAN;CAAmB,QAAIyE,WAAW,GAACV,mBAAmB,CAAC/D,QAAD,EAAUsE,eAAV,CAAnC;CAA8DE,IAAAA,OAAO,GAACvC,uBAAuB,CAACsC,gBAAD,EAAkBC,OAAlB,CAA/B;CAA0DlL,IAAAA,6BAA6B,CAAC,EAAD,EAAI,CAAC+K,YAAD,CAAJ,EAAmB,UAASK,SAAT,EAAmB;CAACA,MAAAA,SAAS,GAACA,SAAS,CAAC,CAAD,CAAnB;CAAuB,UAAI7E,SAAS,GAAC,iBAAe6E,SAAS,CAAChrB,IAAvC;;CAA4C,UAAGjM,SAAS,KAAGi3B,SAAS,CAACvJ,eAAV,CAA0BwI,gBAAzC,EAA0D;CAACe,QAAAA,SAAS,CAACvJ,eAAV,CAA0BwI,gBAA1B,GAA2C,EAA3C;CAA8C;;CAAA,UAAGl2B,SAAS,KAAGi3B,SAAS,CAACvJ,eAAV,CAA0BwI,gBAA1B,CAA2C3D,QAAQ,GAAC,CAApD,CAAf,EAAsE;CAAC,cAAM,IAAI9G,YAAJ,CAAiB,iFAA+E8G,QAAQ,GAAC,CAAxF,IAA2F,eAA3F,GAA2G0E,SAAS,CAAChrB,IAArH,GAA0H,qGAA3I,CAAN;CAAwP;;CAAAgrB,MAAAA,SAAS,CAACvJ,eAAV,CAA0BwI,gBAA1B,CAA2C3D,QAAQ,GAAC,CAApD,IAAwD,MAAI;CAAC0C,QAAAA,qBAAqB,CAAC,sBAAoBgC,SAAS,CAAChrB,IAA9B,GAAmC,uBAApC,EAA4D+qB,WAA5D,CAArB;CAA8F,OAA3J;;CAA6JnL,MAAAA,6BAA6B,CAAC,EAAD,EAAImL,WAAJ,EAAgB,UAASE,QAAT,EAAkB;CAACA,QAAAA,QAAQ,CAACtnB,MAAT,CAAgB,CAAhB,EAAkB,CAAlB,EAAoB,IAApB;CAA0BqnB,QAAAA,SAAS,CAACvJ,eAAV,CAA0BwI,gBAA1B,CAA2C3D,QAAQ,GAAC,CAApD,IAAuD4E,oBAAoB,CAAC/E,SAAD,EAAW8E,QAAX,EAAoB,IAApB,EAAyBH,OAAzB,EAAiC7D,cAAjC,CAA3E;CAA4H,eAAM,EAAN;CAAS,OAAlM,CAA7B;CAAiO,aAAM,EAAN;CAAS,KAAz5B,CAA7B;CAAw7B;;CAAA,WAASkE,IAAT,CAAczU,WAAd,EAA0B0U,YAA1B,EAAuC;CAAC,QAAG,EAAE1U,WAAW,YAAYyI,QAAzB,CAAH,EAAsC;CAAC,YAAM,IAAI5Z,SAAJ,CAAc,uCAAqC,OAAOmR,WAA5C,GAAwD,0BAAtE,CAAN;CAAwG;;CAAA,QAAI2U,KAAK,GAACpM,mBAAmB,CAACvI,WAAW,CAAC1W,IAAZ,IAAkB,qBAAnB,EAAyC,YAAU,EAAnD,CAA7B;CAAoFqrB,IAAAA,KAAK,CAAC7uB,SAAN,GAAgBka,WAAW,CAACla,SAA5B;CAAsC,QAAIub,GAAG,GAAC,IAAIsT,KAAJ,EAAR;CAAkB,QAAIzmB,CAAC,GAAC8R,WAAW,CAACtW,KAAZ,CAAkB2X,GAAlB,EAAsBqT,YAAtB,CAAN;CAA0C,WAAOxmB,CAAC,YAAY5S,MAAb,GAAoB4S,CAApB,GAAsBmT,GAA7B;CAAiC;;CAAA,WAASmT,oBAAT,CAA8B/E,SAA9B,EAAwC8E,QAAxC,EAAiDD,SAAjD,EAA2DM,cAA3D,EAA0EC,aAA1E,EAAwF;CAAC,QAAIjF,QAAQ,GAAC2E,QAAQ,CAACx2B,MAAtB;;CAA6B,QAAG6xB,QAAQ,GAAC,CAAZ,EAAc;CAAC7G,MAAAA,iBAAiB,CAAC,gFAAD,CAAjB;CAAoG;;CAAA,QAAI+L,iBAAiB,GAACP,QAAQ,CAAC,CAAD,CAAR,KAAc,IAAd,IAAoBD,SAAS,KAAG,IAAtD;CAA2D,QAAIS,oBAAoB,GAAC,KAAzB;;CAA+B,SAAI,IAAI5xB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACoxB,QAAQ,CAACx2B,MAAvB,EAA8B,EAAEoF,CAAhC,EAAkC;CAAC,UAAGoxB,QAAQ,CAACpxB,CAAD,CAAR,KAAc,IAAd,IAAoBoxB,QAAQ,CAACpxB,CAAD,CAAR,CAAYqnB,kBAAZ,KAAiCntB,SAAxD,EAAkE;CAAC03B,QAAAA,oBAAoB,GAAC,IAArB;CAA0B;CAAM;CAAC;;CAAA,QAAIC,OAAO,GAACT,QAAQ,CAAC,CAAD,CAAR,CAAYjrB,IAAZ,KAAmB,MAA/B;CAAsC,QAAI2rB,QAAQ,GAAC,EAAb;CAAgB,QAAIC,aAAa,GAAC,EAAlB;;CAAqB,SAAI,IAAI/xB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACysB,QAAQ,GAAC,CAAvB,EAAyB,EAAEzsB,CAA3B,EAA6B;CAAC8xB,MAAAA,QAAQ,IAAE,CAAC9xB,CAAC,KAAG,CAAJ,GAAM,IAAN,GAAW,EAAZ,IAAgB,KAAhB,GAAsBA,CAAhC;CAAkC+xB,MAAAA,aAAa,IAAE,CAAC/xB,CAAC,KAAG,CAAJ,GAAM,IAAN,GAAW,EAAZ,IAAgB,KAAhB,GAAsBA,CAAtB,GAAwB,OAAvC;CAA+C;;CAAA,QAAIgyB,aAAa,GAAC,qBAAmB7M,qBAAqB,CAACmH,SAAD,CAAxC,GAAoD,GAApD,GAAwDwF,QAAxD,GAAiE,OAAjE,GAAyE,2BAAzE,IAAsGrF,QAAQ,GAAC,CAA/G,IAAkH,OAAlH,GAA0H,8BAA1H,GAAyJH,SAAzJ,GAAmK,4DAAnK,IAAiOG,QAAQ,GAAC,CAA1O,IAA6O,aAA7O,GAA2P,KAA7Q;;CAAmR,QAAGmF,oBAAH,EAAwB;CAACI,MAAAA,aAAa,IAAE,yBAAf;CAAyC;;CAAA,QAAIC,SAAS,GAACL,oBAAoB,GAAC,aAAD,GAAe,MAAjD;CAAwD,QAAIM,KAAK,GAAC,CAAC,mBAAD,EAAqB,SAArB,EAA+B,IAA/B,EAAoC,gBAApC,EAAqD,SAArD,EAA+D,YAA/D,CAAV;CAAuF,QAAIC,KAAK,GAAC,CAACvM,iBAAD,EAAmB6L,cAAnB,EAAkCC,aAAlC,EAAgDf,cAAhD,EAA+DS,QAAQ,CAAC,CAAD,CAAvE,EAA2EA,QAAQ,CAAC,CAAD,CAAnF,CAAV;;CAAkG,QAAGO,iBAAH,EAAqB;CAACK,MAAAA,aAAa,IAAE,2CAAyCC,SAAzC,GAAmD,YAAlE;CAA+E;;CAAA,SAAI,IAAIjyB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACysB,QAAQ,GAAC,CAAvB,EAAyB,EAAEzsB,CAA3B,EAA6B;CAACgyB,MAAAA,aAAa,IAAE,YAAUhyB,CAAV,GAAY,iBAAZ,GAA8BA,CAA9B,GAAgC,cAAhC,GAA+CiyB,SAA/C,GAAyD,OAAzD,GAAiEjyB,CAAjE,GAAmE,QAAnE,GAA4EoxB,QAAQ,CAACpxB,CAAC,GAAC,CAAH,CAAR,CAAcmG,IAA1F,GAA+F,IAA9G;CAAmH+rB,MAAAA,KAAK,CAAC3lB,IAAN,CAAW,YAAUvM,CAArB;CAAwBmyB,MAAAA,KAAK,CAAC5lB,IAAN,CAAW6kB,QAAQ,CAACpxB,CAAC,GAAC,CAAH,CAAnB;CAA0B;;CAAA,QAAG2xB,iBAAH,EAAqB;CAACI,MAAAA,aAAa,GAAC,eAAaA,aAAa,CAACn3B,MAAd,GAAqB,CAArB,GAAuB,IAAvB,GAA4B,EAAzC,IAA6Cm3B,aAA3D;CAAyE;;CAAAC,IAAAA,aAAa,IAAE,CAACH,OAAO,GAAC,WAAD,GAAa,EAArB,IAAyB,YAAzB,IAAuCE,aAAa,CAACn3B,MAAd,GAAqB,CAArB,GAAuB,IAAvB,GAA4B,EAAnE,IAAuEm3B,aAAvE,GAAqF,MAApG;;CAA2G,QAAGH,oBAAH,EAAwB;CAACI,MAAAA,aAAa,IAAE,gCAAf;CAAgD,KAAzE,MAA6E;CAAC,WAAI,IAAIhyB,CAAC,GAAC2xB,iBAAiB,GAAC,CAAD,GAAG,CAA9B,EAAgC3xB,CAAC,GAACoxB,QAAQ,CAACx2B,MAA3C,EAAkD,EAAEoF,CAApD,EAAsD;CAAC,YAAIoyB,SAAS,GAACpyB,CAAC,KAAG,CAAJ,GAAM,WAAN,GAAkB,SAAOA,CAAC,GAAC,CAAT,IAAY,OAA5C;;CAAoD,YAAGoxB,QAAQ,CAACpxB,CAAD,CAAR,CAAYqnB,kBAAZ,KAAiC,IAApC,EAAyC;CAAC2K,UAAAA,aAAa,IAAEI,SAAS,GAAC,QAAV,GAAmBA,SAAnB,GAA6B,QAA7B,GAAsChB,QAAQ,CAACpxB,CAAD,CAAR,CAAYmG,IAAlD,GAAuD,IAAtE;CAA2E+rB,UAAAA,KAAK,CAAC3lB,IAAN,CAAW6lB,SAAS,GAAC,OAArB;CAA8BD,UAAAA,KAAK,CAAC5lB,IAAN,CAAW6kB,QAAQ,CAACpxB,CAAD,CAAR,CAAYqnB,kBAAvB;CAA2C;CAAC;CAAC;;CAAA,QAAGwK,OAAH,EAAW;CAACG,MAAAA,aAAa,IAAE,0CAAwC,eAAvD;CAAuE;;CAAMA,IAAAA,aAAa,IAAE,KAAf;CAAqBE,IAAAA,KAAK,CAAC3lB,IAAN,CAAWylB,aAAX;CAA0B,QAAIK,eAAe,GAACf,IAAI,CAAChM,QAAD,EAAU4M,KAAV,CAAJ,CAAqB3rB,KAArB,CAA2B,IAA3B,EAAgC4rB,KAAhC,CAApB;CAA2D,WAAOE,eAAP;CAAuB;;CAAA,WAASC,gCAAT,CAA0CxB,YAA1C,EAAuDzE,UAAvD,EAAkEI,QAAlE,EAA2EsE,eAA3E,EAA2FC,gBAA3F,EAA4GuB,UAA5G,EAAuHC,OAAvH,EAA+HC,aAA/H,EAA6I;CAAC,QAAIvB,WAAW,GAACV,mBAAmB,CAAC/D,QAAD,EAAUsE,eAAV,CAAnC;CAA8D1E,IAAAA,UAAU,GAACzH,gBAAgB,CAACyH,UAAD,CAA3B;CAAwCkG,IAAAA,UAAU,GAAC7D,uBAAuB,CAACsC,gBAAD,EAAkBuB,UAAlB,CAAlC;CAAgExM,IAAAA,6BAA6B,CAAC,EAAD,EAAI,CAAC+K,YAAD,CAAJ,EAAmB,UAASK,SAAT,EAAmB;CAACA,MAAAA,SAAS,GAACA,SAAS,CAAC,CAAD,CAAnB;CAAuB,UAAI7E,SAAS,GAAC6E,SAAS,CAAChrB,IAAV,GAAe,GAAf,GAAmBkmB,UAAjC;;CAA4C,UAAGA,UAAU,CAACrmB,UAAX,CAAsB,IAAtB,CAAH,EAA+B;CAACqmB,QAAAA,UAAU,GAACqG,MAAM,CAACrG,UAAU,CAACiC,SAAX,CAAqB,CAArB,CAAD,CAAjB;CAA2C;;CAAA,UAAGmE,aAAH,EAAiB;CAACtB,QAAAA,SAAS,CAACvJ,eAAV,CAA0BiF,oBAA1B,CAA+CtgB,IAA/C,CAAoD8f,UAApD;CAAgE;;CAAA,eAASsG,mBAAT,GAA8B;CAACxD,QAAAA,qBAAqB,CAAC,iBAAe7C,SAAf,GAAyB,uBAA1B,EAAkD4E,WAAlD,CAArB;CAAoF;;CAAA,UAAI9E,KAAK,GAAC+E,SAAS,CAACvJ,eAAV,CAA0BiD,iBAApC;CAAsD,UAAI+H,MAAM,GAACxG,KAAK,CAACC,UAAD,CAAhB;;CAA6B,UAAGnyB,SAAS,KAAG04B,MAAZ,IAAoB14B,SAAS,KAAG04B,MAAM,CAACrG,aAAnB,IAAkCqG,MAAM,CAACC,SAAP,KAAmB1B,SAAS,CAAChrB,IAA/D,IAAqEysB,MAAM,CAACnG,QAAP,KAAkBA,QAAQ,GAAC,CAAvH,EAAyH;CAACkG,QAAAA,mBAAmB,CAAClG,QAApB,GAA6BA,QAAQ,GAAC,CAAtC;CAAwCkG,QAAAA,mBAAmB,CAACE,SAApB,GAA8B1B,SAAS,CAAChrB,IAAxC;CAA6CimB,QAAAA,KAAK,CAACC,UAAD,CAAL,GAAkBsG,mBAAlB;CAAsC,OAArP,MAAyP;CAACxG,QAAAA,mBAAmB,CAACC,KAAD,EAAOC,UAAP,EAAkBC,SAAlB,CAAnB;CAAgDF,QAAAA,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlB,CAAgCE,QAAQ,GAAC,CAAzC,IAA4CkG,mBAA5C;CAAgE;;CAAA5M,MAAAA,6BAA6B,CAAC,EAAD,EAAImL,WAAJ,EAAgB,UAASE,QAAT,EAAkB;CAAC,YAAI0B,cAAc,GAACzB,oBAAoB,CAAC/E,SAAD,EAAW8E,QAAX,EAAoBD,SAApB,EAA8BoB,UAA9B,EAAyCC,OAAzC,CAAvC;;CAAyF,YAAGt4B,SAAS,KAAGkyB,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAjC,EAA+C;CAACuG,UAAAA,cAAc,CAACrG,QAAf,GAAwBA,QAAQ,GAAC,CAAjC;CAAmCL,UAAAA,KAAK,CAACC,UAAD,CAAL,GAAkByG,cAAlB;CAAiC,SAApH,MAAwH;CAAC1G,UAAAA,KAAK,CAACC,UAAD,CAAL,CAAkBE,aAAlB,CAAgCE,QAAQ,GAAC,CAAzC,IAA4CqG,cAA5C;CAA2D;;CAAA,eAAM,EAAN;CAAS,OAAzT,CAA7B;CAAwV,aAAM,EAAN;CAAS,KAAxpC,CAA7B;CAAurC;;CAAA,WAASC,YAAT,CAAsBC,KAAtB,EAA4B7B,SAA5B,EAAsC7E,SAAtC,EAAgD;CAAC,QAAG,EAAE0G,KAAK,YAAY76B,MAAnB,CAAH,EAA8B;CAACytB,MAAAA,iBAAiB,CAAC0G,SAAS,GAAC,wBAAV,GAAmC0G,KAApC,CAAjB;CAA4D;;CAAA,QAAG,EAAEA,KAAK,YAAY7B,SAAS,CAACvJ,eAAV,CAA0B/K,WAA7C,CAAH,EAA6D;CAAC+I,MAAAA,iBAAiB,CAAC0G,SAAS,GAAC,oCAAV,GAA+C0G,KAAK,CAACnW,WAAN,CAAkB1W,IAAlE,CAAjB;CAAyF;;CAAA,QAAG,CAAC6sB,KAAK,CAACtL,EAAN,CAASjoB,GAAb,EAAiB;CAACmmB,MAAAA,iBAAiB,CAAC,2CAAyC0G,SAAzC,GAAmD,oBAApD,CAAjB;CAA2F;;CAAA,WAAOQ,aAAa,CAACkG,KAAK,CAACtL,EAAN,CAASjoB,GAAV,EAAcuzB,KAAK,CAACtL,EAAN,CAASC,OAAT,CAAiBC,eAA/B,EAA+CuJ,SAAS,CAACvJ,eAAzD,CAApB;CAA8F;;CAAA,WAASqL,gCAAT,CAA0C9B,SAA1C,EAAoD+B,SAApD,EAA8DC,gBAA9D,EAA+EC,eAA/E,EAA+FvU,MAA/F,EAAsGwU,aAAtG,EAAoHC,kBAApH,EAAuIC,eAAvI,EAAuJC,MAAvJ,EAA8JC,aAA9J,EAA4K;CAACP,IAAAA,SAAS,GAACtO,gBAAgB,CAACsO,SAAD,CAA1B;CAAsCrU,IAAAA,MAAM,GAAC6P,uBAAuB,CAAC0E,eAAD,EAAiBvU,MAAjB,CAA9B;CAAuDkH,IAAAA,6BAA6B,CAAC,EAAD,EAAI,CAACoL,SAAD,CAAJ,EAAgB,UAASA,SAAT,EAAmB;CAACA,MAAAA,SAAS,GAACA,SAAS,CAAC,CAAD,CAAnB;CAAuB,UAAI7E,SAAS,GAAC6E,SAAS,CAAChrB,IAAV,GAAe,GAAf,GAAmB+sB,SAAjC;CAA2C,UAAIQ,IAAI,GAAC;CAACl2B,QAAAA,GAAG,EAAC,YAAU;CAAC2xB,UAAAA,qBAAqB,CAAC,mBAAiB7C,SAAjB,GAA2B,uBAA5B,EAAoD,CAAC6G,gBAAD,EAAkBG,kBAAlB,CAApD,CAArB;CAAgH,SAAhI;CAAiIK,QAAAA,UAAU,EAAC,IAA5I;CAAiJp2B,QAAAA,YAAY,EAAC;CAA9J,OAAT;;CAA6K,UAAGi2B,MAAH,EAAU;CAACE,QAAAA,IAAI,CAAC9wB,GAAL,GAAU,MAAI;CAACusB,UAAAA,qBAAqB,CAAC,mBAAiB7C,SAAjB,GAA2B,uBAA5B,EAAoD,CAAC6G,gBAAD,EAAkBG,kBAAlB,CAApD,CAArB;CAAgH,SAA/H;CAAiI,OAA5I,MAAgJ;CAACI,QAAAA,IAAI,CAAC9wB,GAAL,GAAUgxB,CAAC,IAAE;CAAChO,UAAAA,iBAAiB,CAAC0G,SAAS,GAAC,0BAAX,CAAjB;CAAwD,SAAtE;CAAwE;;CAAAn0B,MAAAA,MAAM,CAACmF,cAAP,CAAsB6zB,SAAS,CAACvJ,eAAV,CAA0BiD,iBAAhD,EAAkEqI,SAAlE,EAA4EQ,IAA5E;CAAkF3N,MAAAA,6BAA6B,CAAC,EAAD,EAAIyN,MAAM,GAAC,CAACL,gBAAD,EAAkBG,kBAAlB,CAAD,GAAuC,CAACH,gBAAD,CAAjD,EAAoE,UAAS/D,KAAT,EAAe;CAAC,YAAI+D,gBAAgB,GAAC/D,KAAK,CAAC,CAAD,CAA1B;CAA8B,YAAIsE,IAAI,GAAC;CAACl2B,UAAAA,GAAG,EAAC,YAAU;CAAC,gBAAIiC,GAAG,GAACszB,YAAY,CAAC,IAAD,EAAM5B,SAAN,EAAgB7E,SAAS,GAAC,SAA1B,CAApB;CAAyD,mBAAO6G,gBAAgB,CAAC,cAAD,CAAhB,CAAiCtU,MAAM,CAACwU,aAAD,EAAe5zB,GAAf,CAAvC,CAAP;CAAmE,WAA5I;CAA6Ik0B,UAAAA,UAAU,EAAC;CAAxJ,SAAT;;CAAuK,YAAGH,MAAH,EAAU;CAACA,UAAAA,MAAM,GAAC9E,uBAAuB,CAAC6E,eAAD,EAAiBC,MAAjB,CAA9B;CAAuD,cAAIF,kBAAkB,GAAClE,KAAK,CAAC,CAAD,CAA5B;;CAAgCsE,UAAAA,IAAI,CAAC9wB,GAAL,GAAS,UAASgxB,CAAT,EAAW;CAAC,gBAAIn0B,GAAG,GAACszB,YAAY,CAAC,IAAD,EAAM5B,SAAN,EAAgB7E,SAAS,GAAC,SAA1B,CAApB;CAAyD,gBAAIpF,WAAW,GAAC,EAAhB;CAAmBsM,YAAAA,MAAM,CAACC,aAAD,EAAeh0B,GAAf,EAAmB6zB,kBAAkB,CAAC,YAAD,CAAlB,CAAiCpM,WAAjC,EAA6C0M,CAA7C,CAAnB,CAAN;CAA0EjD,YAAAA,cAAc,CAACzJ,WAAD,CAAd;CAA4B,WAAvM;CAAwM;;CAAA/uB,QAAAA,MAAM,CAACmF,cAAP,CAAsB6zB,SAAS,CAACvJ,eAAV,CAA0BiD,iBAAhD,EAAkEqI,SAAlE,EAA4EQ,IAA5E;CAAkF,eAAM,EAAN;CAAS,OAA9pB,CAA7B;CAA6rB,aAAM,EAAN;CAAS,KAApwC,CAA7B;CAAmyC;;CAAA,MAAIG,eAAe,GAAC,EAApB;CAAuB,MAAIC,kBAAkB,GAAC,CAAC,EAAD,EAAI;CAAC7qB,IAAAA,KAAK,EAAC/O;CAAP,GAAJ,EAAsB;CAAC+O,IAAAA,KAAK,EAAC;CAAP,GAAtB,EAAmC;CAACA,IAAAA,KAAK,EAAC;CAAP,GAAnC,EAAgD;CAACA,IAAAA,KAAK,EAAC;CAAP,GAAhD,CAAvB;;CAAsF,WAAS8qB,cAAT,CAAwBtL,MAAxB,EAA+B;CAAC,QAAGA,MAAM,GAAC,CAAP,IAAU,MAAI,EAAEqL,kBAAkB,CAACrL,MAAD,CAAlB,CAA2BuL,QAA9C,EAAuD;CAACF,MAAAA,kBAAkB,CAACrL,MAAD,CAAlB,GAA2BvuB,SAA3B;CAAqC25B,MAAAA,eAAe,CAACtnB,IAAhB,CAAqBkc,MAArB;CAA6B;CAAC;;CAAA,WAASwL,mBAAT,GAA8B;CAAC,QAAI1e,KAAK,GAAC,CAAV;;CAAY,SAAI,IAAIvV,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC8zB,kBAAkB,CAACl5B,MAAjC,EAAwC,EAAEoF,CAA1C,EAA4C;CAAC,UAAG8zB,kBAAkB,CAAC9zB,CAAD,CAAlB,KAAwB9F,SAA3B,EAAqC;CAAC,UAAEqb,KAAF;CAAQ;CAAC;;CAAA,WAAOA,KAAP;CAAa;;CAAA,WAAS2e,eAAT,GAA0B;CAAC,SAAI,IAAIl0B,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC8zB,kBAAkB,CAACl5B,MAAjC,EAAwC,EAAEoF,CAA1C,EAA4C;CAAC,UAAG8zB,kBAAkB,CAAC9zB,CAAD,CAAlB,KAAwB9F,SAA3B,EAAqC;CAAC,eAAO45B,kBAAkB,CAAC9zB,CAAD,CAAzB;CAA6B;CAAC;;CAAA,WAAO,IAAP;CAAY;;CAAA,WAASm0B,UAAT,GAAqB;CAAC38B,IAAAA,MAAM,CAAC,qBAAD,CAAN,GAA8By8B,mBAA9B;CAAkDz8B,IAAAA,MAAM,CAAC,iBAAD,CAAN,GAA0B08B,eAA1B;CAA0C;;CAAA,MAAI1G,KAAK,GAAC;CAAC4G,IAAAA,OAAO,EAAC3L,MAAM,IAAE;CAAC,UAAG,CAACA,MAAJ,EAAW;CAAC7C,QAAAA,iBAAiB,CAAC,sCAAoC6C,MAArC,CAAjB;CAA8D;;CAAA,aAAOqL,kBAAkB,CAACrL,MAAD,CAAlB,CAA2Bxf,KAAlC;CAAwC,KAApI;CAAqIwkB,IAAAA,QAAQ,EAACxkB,KAAK,IAAE;CAAC,cAAOA,KAAP;CAAc,aAAK/O,SAAL;CAAe,iBAAO,CAAP;;CAAS,aAAK,IAAL;CAAU,iBAAO,CAAP;;CAAS,aAAK,IAAL;CAAU,iBAAO,CAAP;;CAAS,aAAK,KAAL;CAAW,iBAAO,CAAP;;CAAS;CAAQ;CAAC,gBAAIuuB,MAAM,GAACoL,eAAe,CAACj5B,MAAhB,GAAuBi5B,eAAe,CAACnb,GAAhB,EAAvB,GAA6Cob,kBAAkB,CAACl5B,MAA3E;CAAkFk5B,YAAAA,kBAAkB,CAACrL,MAAD,CAAlB,GAA2B;CAACuL,cAAAA,QAAQ,EAAC,CAAV;CAAY/qB,cAAAA,KAAK,EAACA;CAAlB,aAA3B;CAAoD,mBAAOwf,MAAP;CAAc;CAA7P;CAA+P;CAArZ,GAAV;;CAAia,WAAS4L,uBAAT,CAAiC3N,OAAjC,EAAyCvgB,IAAzC,EAA8C;CAACA,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4BmgB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACvgB,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAe,UAASsiB,MAAT,EAAgB;CAAC,YAAIU,EAAE,GAACqE,KAAK,CAAC4G,OAAN,CAAc3L,MAAd,CAAP;;CAA6BsL,QAAAA,cAAc,CAACtL,MAAD,CAAd;;CAAuB,eAAOU,EAAP;CAAU,OAAzG;CAA0G,oBAAa,UAASjC,WAAT,EAAqBje,KAArB,EAA2B;CAAC,eAAOukB,KAAK,CAACC,QAAN,CAAexkB,KAAf,CAAP;CAA6B,OAAhL;CAAiL,wBAAiB,CAAlM;CAAoM,8BAAuB0kB,0BAA3N;CAAsPtG,MAAAA,kBAAkB,EAAC;CAAzQ,KAAT,CAAZ;CAAqS;;CAAA,WAAS4F,YAAT,CAAsB2G,CAAtB,EAAwB;CAAC,QAAGA,CAAC,KAAG,IAAP,EAAY;CAAC,aAAM,MAAN;CAAa;;CAAA,QAAIU,CAAC,GAAC,OAAOV,CAAb;;CAAe,QAAGU,CAAC,KAAG,QAAJ,IAAcA,CAAC,KAAG,OAAlB,IAA2BA,CAAC,KAAG,UAAlC,EAA6C;CAAC,aAAOV,CAAC,CAACt0B,QAAF,EAAP;CAAoB,KAAlE,MAAsE;CAAC,aAAM,KAAGs0B,CAAT;CAAW;CAAC;;CAAA,WAASW,yBAAT,CAAmCpuB,IAAnC,EAAwCvC,KAAxC,EAA8C;CAAC,YAAOA,KAAP;CAAc,WAAK,CAAL;CAAO,eAAO,UAASwjB,OAAT,EAAiB;CAAC,iBAAO,KAAK,cAAL,EAAqBtlB,OAAO,CAACslB,OAAO,IAAE,CAAV,CAA5B,CAAP;CAAiD,SAA1E;;CAA2E,WAAK,CAAL;CAAO,eAAO,UAASA,OAAT,EAAiB;CAAC,iBAAO,KAAK,cAAL,EAAqBrlB,OAAO,CAACqlB,OAAO,IAAE,CAAV,CAA5B,CAAP;CAAiD,SAA1E;;CAA2E;CAAQ,cAAM,IAAI1b,SAAJ,CAAc,yBAAuBvF,IAArC,CAAN;CAA1L;CAA4O;;CAAA,WAASquB,uBAAT,CAAiC9N,OAAjC,EAAyCvgB,IAAzC,EAA8C3E,IAA9C,EAAmD;CAAC,QAAIoC,KAAK,GAAC4gB,gBAAgB,CAAChjB,IAAD,CAA1B;CAAiC2E,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4BmgB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACvgB,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAe,UAAS8C,KAAT,EAAe;CAAC,eAAOA,KAAP;CAAa,OAAvD;CAAwD,oBAAa,UAASie,WAAT,EAAqBje,KAArB,EAA2B;CAAC,YAAG,OAAOA,KAAP,IAAc,QAAd,IAAwB,OAAOA,KAAP,IAAc,SAAzC,EAAmD;CAAC,gBAAM,IAAIyC,SAAJ,CAAc,qBAAmBuhB,YAAY,CAAChkB,KAAD,CAA/B,GAAuC,OAAvC,GAA+C,KAAK9C,IAAlE,CAAN;CAA8E;;CAAA,eAAO8C,KAAP;CAAa,OAAhP;CAAiP,wBAAiB,CAAlQ;CAAoQ,8BAAuBsrB,yBAAyB,CAACpuB,IAAD,EAAMvC,KAAN,CAApT;CAAiUyjB,MAAAA,kBAAkB,EAAC;CAApV,KAAT,CAAZ;CAAgX;;CAAA,WAASoN,2BAAT,CAAqCtuB,IAArC,EAA0CvC,KAA1C,EAAgD8wB,MAAhD,EAAuD;CAAC,YAAO9wB,KAAP;CAAc,WAAK,CAAL;CAAO,eAAO8wB,MAAM,GAAC,SAASC,iBAAT,CAA2BvN,OAA3B,EAAmC;CAAC,iBAAO1lB,KAAK,CAAC0lB,OAAD,CAAZ;CAAsB,SAA3D,GAA4D,SAASwN,iBAAT,CAA2BxN,OAA3B,EAAmC;CAAC,iBAAO1nB,MAAM,CAAC0nB,OAAD,CAAb;CAAuB,SAApI;;CAAqI,WAAK,CAAL;CAAO,eAAOsN,MAAM,GAAC,SAASG,kBAAT,CAA4BzN,OAA5B,EAAoC;CAAC,iBAAOxmB,MAAM,CAACwmB,OAAO,IAAE,CAAV,CAAb;CAA0B,SAAhE,GAAiE,SAAS0N,kBAAT,CAA4B1N,OAA5B,EAAoC;CAAC,iBAAO1mB,OAAO,CAAC0mB,OAAO,IAAE,CAAV,CAAd;CAA2B,SAA9I;;CAA+I,WAAK,CAAL;CAAO,eAAOsN,MAAM,GAAC,SAASK,kBAAT,CAA4B3N,OAA5B,EAAoC;CAAC,iBAAOjmB,MAAM,CAACimB,OAAO,IAAE,CAAV,CAAb;CAA0B,SAAhE,GAAiE,SAAS4N,kBAAT,CAA4B5N,OAA5B,EAAoC;CAAC,iBAAOvlB,OAAO,CAACulB,OAAO,IAAE,CAAV,CAAd;CAA2B,SAA9I;;CAA+I;CAAQ,cAAM,IAAI1b,SAAJ,CAAc,2BAAyBvF,IAAvC,CAAN;CAA9c;CAAkgB;;CAAA,WAAS8uB,yBAAT,CAAmC5Q,aAAnC,EAAiDle,IAAjD,EAAsD3E,IAAtD,EAA2D8iB,QAA3D,EAAoEC,QAApE,EAA6E;CAACpe,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;;CAA4B,QAAGoe,QAAQ,KAAG,CAAC,CAAf,EAAiB;CAACA,MAAAA,QAAQ,GAAC,UAAT;CAAoB;;CAAA,QAAI3gB,KAAK,GAAC4gB,gBAAgB,CAAChjB,IAAD,CAA1B;;CAAiC,QAAI0zB,YAAY,GAACjsB,KAAK,IAAEA,KAAxB;;CAA8B,QAAGqb,QAAQ,KAAG,CAAd,EAAgB;CAAC,UAAI6Q,QAAQ,GAAC,KAAG,IAAE3zB,IAAlB;;CAAuB0zB,MAAAA,YAAY,GAAEjsB,KAAK,IAAEA,KAAK,IAAEksB,QAAP,KAAkBA,QAAvC;CAAiD;;CAAA,QAAIC,cAAc,GAACjvB,IAAI,CAACuI,QAAL,CAAc,UAAd,CAAnB;;CAA6C,QAAI2mB,eAAe,GAAC,CAACpsB,KAAD,EAAOqsB,UAAP,KAAoB;CAAC,UAAG,OAAOrsB,KAAP,IAAc,QAAd,IAAwB,OAAOA,KAAP,IAAc,SAAzC,EAAmD;CAAC,cAAM,IAAIyC,SAAJ,CAAc,qBAAmBuhB,YAAY,CAAChkB,KAAD,CAA/B,GAAuC,OAAvC,GAA+CqsB,UAA7D,CAAN;CAA+E;;CAAA,UAAGrsB,KAAK,GAACqb,QAAN,IAAgBrb,KAAK,GAACsb,QAAzB,EAAkC;CAAC,cAAM,IAAI7Y,SAAJ,CAAc,uBAAqBuhB,YAAY,CAAChkB,KAAD,CAAjC,GAAyC,uDAAzC,GAAiG9C,IAAjG,GAAsG,uCAAtG,GAA8Ime,QAA9I,GAAuJ,IAAvJ,GAA4JC,QAA5J,GAAqK,IAAnL,CAAN;CAA+L;CAAC,KAA/Y;;CAAgZ,QAAIgR,UAAJ;;CAAe,QAAGH,cAAH,EAAkB;CAACG,MAAAA,UAAU,GAAC,UAASrO,WAAT,EAAqBje,KAArB,EAA2B;CAACosB,QAAAA,eAAe,CAACpsB,KAAD,EAAO,KAAK9C,IAAZ,CAAf;CAAiC,eAAO8C,KAAK,KAAG,CAAf;CAAiB,OAAzF;CAA0F,KAA7G,MAAiH;CAACssB,MAAAA,UAAU,GAAC,UAASrO,WAAT,EAAqBje,KAArB,EAA2B;CAACosB,QAAAA,eAAe,CAACpsB,KAAD,EAAO,KAAK9C,IAAZ,CAAf;CAAiC,eAAO8C,KAAP;CAAa,OAArF;CAAsF;;CAAAqd,IAAAA,YAAY,CAACjC,aAAD,EAAe;CAACle,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAe+uB,YAA1B;CAAuC,oBAAaK,UAApD;CAA+D,wBAAiB,CAAhF;CAAkF,8BAAuBd,2BAA2B,CAACtuB,IAAD,EAAMvC,KAAN,EAAY0gB,QAAQ,KAAG,CAAvB,CAApI;CAA8J+C,MAAAA,kBAAkB,EAAC;CAAjL,KAAf,CAAZ;CAAmN;;CAAA,WAASmO,6BAAT,CAAuC9O,OAAvC,EAA+C+O,aAA/C,EAA6DtvB,IAA7D,EAAkE;CAAC,QAAIuvB,WAAW,GAAC,CAACxzB,SAAD,EAAW7H,UAAX,EAAsB8H,UAAtB,EAAiCE,WAAjC,EAA6CD,UAA7C,EAAwDE,WAAxD,EAAoEC,YAApE,EAAiFC,YAAjF,CAAhB;CAA+G,QAAImzB,EAAE,GAACD,WAAW,CAACD,aAAD,CAAlB;;CAAkC,aAASG,gBAAT,CAA0BnN,MAA1B,EAAiC;CAACA,MAAAA,MAAM,GAACA,MAAM,IAAE,CAAf;CAAiB,UAAI7oB,IAAI,GAACiC,OAAT;CAAiB,UAAIL,IAAI,GAAC5B,IAAI,CAAC6oB,MAAD,CAAb;CAAsB,UAAI9tB,IAAI,GAACiF,IAAI,CAAC6oB,MAAM,GAAC,CAAR,CAAb;CAAwB,aAAO,IAAIkN,EAAJ,CAAOv7B,MAAP,EAAcO,IAAd,EAAmB6G,IAAnB,CAAP;CAAgC;;CAAA2E,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4BmgB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACvgB,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAeyvB,gBAA1B;CAA2C,wBAAiB,CAA5D;CAA8D,8BAAuBA;CAArF,KAAT,EAAgH;CAAC/O,MAAAA,4BAA4B,EAAC;CAA9B,KAAhH,CAAZ;CAAiK;;CAAA,WAASgP,4BAAT,CAAsCnP,OAAtC,EAA8CvgB,IAA9C,EAAmD;CAACA,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4B,QAAI2vB,eAAe,GAAC3vB,IAAI,KAAG,aAA3B;CAAyCmgB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACvgB,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAe,UAAS8C,KAAT,EAAe;CAAC,YAAIrO,MAAM,GAACiH,OAAO,CAACoH,KAAK,IAAE,CAAR,CAAlB;CAA6B,YAAIjK,GAAJ;;CAAQ,YAAG82B,eAAH,EAAmB;CAAC,cAAIC,cAAc,GAAC9sB,KAAK,GAAC,CAAzB;;CAA2B,eAAI,IAAIjJ,CAAC,GAAC,CAAV,EAAYA,CAAC,IAAEpF,MAAf,EAAsB,EAAEoF,CAAxB,EAA0B;CAAC,gBAAIg2B,cAAc,GAAC/sB,KAAK,GAAC,CAAN,GAAQjJ,CAA3B;;CAA6B,gBAAGA,CAAC,IAAEpF,MAAH,IAAW8E,MAAM,CAACs2B,cAAD,CAAN,IAAwB,CAAtC,EAAwC;CAAC,kBAAIC,OAAO,GAACD,cAAc,GAACD,cAA3B;CAA0C,kBAAIG,aAAa,GAAC12B,YAAY,CAACu2B,cAAD,EAAgBE,OAAhB,CAA9B;;CAAuD,kBAAGj3B,GAAG,KAAG9E,SAAT,EAAmB;CAAC8E,gBAAAA,GAAG,GAACk3B,aAAJ;CAAkB,eAAtC,MAA0C;CAACl3B,gBAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoB,CAApB,CAAL;CAA4BH,gBAAAA,GAAG,IAAEk3B,aAAL;CAAmB;;CAAAH,cAAAA,cAAc,GAACC,cAAc,GAAC,CAA9B;CAAgC;CAAC;CAAC,SAA7W,MAAiX;CAAC,cAAIG,CAAC,GAAC,IAAIxrB,KAAJ,CAAU/P,MAAV,CAAN;;CAAwB,eAAI,IAAIoF,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqB,EAAEoF,CAAvB,EAAyB;CAACm2B,YAAAA,CAAC,CAACn2B,CAAD,CAAD,GAAKd,MAAM,CAACC,YAAP,CAAoBO,MAAM,CAACuJ,KAAK,GAAC,CAAN,GAAQjJ,CAAT,CAA1B,CAAL;CAA4C;;CAAAhB,UAAAA,GAAG,GAACm3B,CAAC,CAAC9rB,IAAF,CAAO,EAAP,CAAJ;CAAe;;CAAA6kB,QAAAA,KAAK,CAACjmB,KAAD,CAAL;;CAAa,eAAOjK,GAAP;CAAW,OAAtkB;CAAukB,oBAAa,UAASkoB,WAAT,EAAqBje,KAArB,EAA2B;CAAC,YAAGA,KAAK,YAAYsK,WAApB,EAAgC;CAACtK,UAAAA,KAAK,GAAC,IAAI5O,UAAJ,CAAe4O,KAAf,CAAN;CAA4B;;CAAA,YAAImtB,SAAJ;CAAc,YAAIC,mBAAmB,GAAC,OAAOptB,KAAP,IAAc,QAAtC;;CAA+C,YAAG,EAAEotB,mBAAmB,IAAEptB,KAAK,YAAY5O,UAAtC,IAAkD4O,KAAK,YAAYqtB,iBAAnE,IAAsFrtB,KAAK,YAAY/G,SAAzG,CAAH,EAAuH;CAAC0jB,UAAAA,iBAAiB,CAAC,uCAAD,CAAjB;CAA2D;;CAAA,YAAGkQ,eAAe,IAAEO,mBAApB,EAAwC;CAACD,UAAAA,SAAS,GAAE,MAAI/1B,eAAe,CAAC4I,KAAD,CAA9B;CAAuC,SAAhF,MAAoF;CAACmtB,UAAAA,SAAS,GAAE,MAAIntB,KAAK,CAACrO,MAArB;CAA6B;;CAAA,YAAIA,MAAM,GAACw7B,SAAS,EAApB;;CAAuB,YAAI32B,GAAG,GAACgC,OAAO,CAAC,IAAE7G,MAAF,GAAS,CAAV,CAAf;;CAA4BiH,QAAAA,OAAO,CAACpC,GAAG,IAAE,CAAN,CAAP,GAAgB7E,MAAhB;;CAAuB,YAAGk7B,eAAe,IAAEO,mBAApB,EAAwC;CAACl2B,UAAAA,YAAY,CAAC8I,KAAD,EAAOxJ,GAAG,GAAC,CAAX,EAAa7E,MAAM,GAAC,CAApB,CAAZ;CAAmC,SAA5E,MAAgF;CAAC,cAAGy7B,mBAAH,EAAuB;CAAC,iBAAI,IAAIr2B,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqB,EAAEoF,CAAvB,EAAyB;CAAC,kBAAIu2B,QAAQ,GAACttB,KAAK,CAAC/I,UAAN,CAAiBF,CAAjB,CAAb;;CAAiC,kBAAGu2B,QAAQ,GAAC,GAAZ,EAAgB;CAACrH,gBAAAA,KAAK,CAACzvB,GAAD,CAAL;;CAAWmmB,gBAAAA,iBAAiB,CAAC,wDAAD,CAAjB;CAA4E;;CAAAlmB,cAAAA,MAAM,CAACD,GAAG,GAAC,CAAJ,GAAMO,CAAP,CAAN,GAAgBu2B,QAAhB;CAAyB;CAAC,WAArN,MAAyN;CAAC,iBAAI,IAAIv2B,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACpF,MAAd,EAAqB,EAAEoF,CAAvB,EAAyB;CAACN,cAAAA,MAAM,CAACD,GAAG,GAAC,CAAJ,GAAMO,CAAP,CAAN,GAAgBiJ,KAAK,CAACjJ,CAAD,CAArB;CAAyB;CAAC;CAAC;;CAAA,YAAGknB,WAAW,KAAG,IAAjB,EAAsB;CAACA,UAAAA,WAAW,CAAC3a,IAAZ,CAAiB2iB,KAAjB,EAAuBzvB,GAAvB;CAA4B;;CAAA,eAAOA,GAAP;CAAW,OAAv/C;CAAw/C,wBAAiB,CAAzgD;CAA2gD,8BAAuBkuB,0BAAliD;CAA6jDtG,MAAAA,kBAAkB,EAAC,UAAS5nB,GAAT,EAAa;CAACyvB,QAAAA,KAAK,CAACzvB,GAAD,CAAL;CAAW;CAAzmD,KAAT,CAAZ;CAAioD;;CAAA,WAAS+2B,6BAAT,CAAuC9P,OAAvC,EAA+C+P,QAA/C,EAAwDtwB,IAAxD,EAA6D;CAACA,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4B,QAAIuwB,YAAJ,EAAiBC,YAAjB,EAA8BC,OAA9B,EAAsCC,cAAtC,EAAqDjzB,KAArD;;CAA2D,QAAG6yB,QAAQ,KAAG,CAAd,EAAgB;CAACC,MAAAA,YAAY,GAACl2B,aAAb;CAA2Bm2B,MAAAA,YAAY,GAAC91B,aAAb;CAA2Bg2B,MAAAA,cAAc,GAAC71B,gBAAf;;CAAgC41B,MAAAA,OAAO,GAAE,MAAIl2B,OAAb;;CAAsBkD,MAAAA,KAAK,GAAC,CAAN;CAAQ,KAArI,MAA0I,IAAG6yB,QAAQ,KAAG,CAAd,EAAgB;CAACC,MAAAA,YAAY,GAACz1B,aAAb;CAA2B01B,MAAAA,YAAY,GAACv1B,aAAb;CAA2By1B,MAAAA,cAAc,GAACv1B,gBAAf;;CAAgCs1B,MAAAA,OAAO,GAAE,MAAI/0B,OAAb;;CAAsB+B,MAAAA,KAAK,GAAC,CAAN;CAAQ;;CAAA0iB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACvgB,MAAAA,IAAI,EAACA,IAAN;CAAW,sBAAe,UAAS8C,KAAT,EAAe;CAAC,YAAIrO,MAAM,GAACiH,OAAO,CAACoH,KAAK,IAAE,CAAR,CAAlB;CAA6B,YAAI6tB,IAAI,GAACF,OAAO,EAAhB;CAAmB,YAAI53B,GAAJ;CAAQ,YAAI+2B,cAAc,GAAC9sB,KAAK,GAAC,CAAzB;;CAA2B,aAAI,IAAIjJ,CAAC,GAAC,CAAV,EAAYA,CAAC,IAAEpF,MAAf,EAAsB,EAAEoF,CAAxB,EAA0B;CAAC,cAAIg2B,cAAc,GAAC/sB,KAAK,GAAC,CAAN,GAAQjJ,CAAC,GAACy2B,QAA7B;;CAAsC,cAAGz2B,CAAC,IAAEpF,MAAH,IAAWk8B,IAAI,CAACd,cAAc,IAAEpyB,KAAjB,CAAJ,IAA6B,CAA3C,EAA6C;CAAC,gBAAImzB,YAAY,GAACf,cAAc,GAACD,cAAhC;CAA+C,gBAAIG,aAAa,GAACQ,YAAY,CAACX,cAAD,EAAgBgB,YAAhB,CAA9B;;CAA4D,gBAAG/3B,GAAG,KAAG9E,SAAT,EAAmB;CAAC8E,cAAAA,GAAG,GAACk3B,aAAJ;CAAkB,aAAtC,MAA0C;CAACl3B,cAAAA,GAAG,IAAEE,MAAM,CAACC,YAAP,CAAoB,CAApB,CAAL;CAA4BH,cAAAA,GAAG,IAAEk3B,aAAL;CAAmB;;CAAAH,YAAAA,cAAc,GAACC,cAAc,GAACS,QAA9B;CAAuC;CAAC;;CAAAvH,QAAAA,KAAK,CAACjmB,KAAD,CAAL;;CAAa,eAAOjK,GAAP;CAAW,OAAjf;CAAkf,oBAAa,UAASkoB,WAAT,EAAqBje,KAArB,EAA2B;CAAC,YAAG,EAAE,OAAOA,KAAP,IAAc,QAAhB,CAAH,EAA6B;CAAC2c,UAAAA,iBAAiB,CAAC,+CAA6Czf,IAA9C,CAAjB;CAAqE;;CAAA,YAAIvL,MAAM,GAACi8B,cAAc,CAAC5tB,KAAD,CAAzB;;CAAiC,YAAIxJ,GAAG,GAACgC,OAAO,CAAC,IAAE7G,MAAF,GAAS67B,QAAV,CAAf;;CAAmC50B,QAAAA,OAAO,CAACpC,GAAG,IAAE,CAAN,CAAP,GAAgB7E,MAAM,IAAEgJ,KAAxB;CAA8B+yB,QAAAA,YAAY,CAAC1tB,KAAD,EAAOxJ,GAAG,GAAC,CAAX,EAAa7E,MAAM,GAAC67B,QAApB,CAAZ;;CAA0C,YAAGvP,WAAW,KAAG,IAAjB,EAAsB;CAACA,UAAAA,WAAW,CAAC3a,IAAZ,CAAiB2iB,KAAjB,EAAuBzvB,GAAvB;CAA4B;;CAAA,eAAOA,GAAP;CAAW,OAAx0B;CAAy0B,wBAAiB,CAA11B;CAA41B,8BAAuBkuB,0BAAn3B;CAA84BtG,MAAAA,kBAAkB,EAAC,UAAS5nB,GAAT,EAAa;CAACyvB,QAAAA,KAAK,CAACzvB,GAAD,CAAL;CAAW;CAA17B,KAAT,CAAZ;CAAk9B;;CAAA,WAASu3B,sBAAT,CAAgCtQ,OAAhC,EAAwCvgB,IAAxC,EAA6C;CAACA,IAAAA,IAAI,GAACye,gBAAgB,CAACze,IAAD,CAArB;CAA4BmgB,IAAAA,YAAY,CAACI,OAAD,EAAS;CAACuQ,MAAAA,MAAM,EAAC,IAAR;CAAa9wB,MAAAA,IAAI,EAACA,IAAlB;CAAuB,wBAAiB,CAAxC;CAA0C,sBAAe,YAAU;CAAC,eAAOjM,SAAP;CAAiB,OAArF;CAAsF,oBAAa,UAASgtB,WAAT,EAAqBC,CAArB,EAAuB;CAAC,eAAOjtB,SAAP;CAAiB;CAA5I,KAAT,CAAZ;CAAoK;;CAAA,WAASg9B,qBAAT,GAAgC;CAAC,WAAOnpB,IAAI,CAACC,GAAL,EAAP;CAAkB;;CAAA,WAASmpB,qBAAT,CAA+BzQ,OAA/B,EAAuC4F,SAAvC,EAAiD;CAAC,QAAI8K,IAAI,GAACrS,eAAe,CAAC2B,OAAD,CAAxB;;CAAkC,QAAGxsB,SAAS,KAAGk9B,IAAf,EAAoB;CAACxR,MAAAA,iBAAiB,CAAC0G,SAAS,GAAC,oBAAV,GAA+B0C,WAAW,CAACtI,OAAD,CAA3C,CAAjB;CAAuE;;CAAA,WAAO0Q,IAAP;CAAY;;CAAA,WAASC,UAAT,CAAoB5O,MAApB,EAA2B6O,UAA3B,EAAsCC,cAAtC,EAAqD;CAAC9O,IAAAA,MAAM,GAAC+E,KAAK,CAAC4G,OAAN,CAAc3L,MAAd,CAAP;CAA6B6O,IAAAA,UAAU,GAACH,qBAAqB,CAACG,UAAD,EAAY,WAAZ,CAAhC;CAAyD,QAAIpQ,WAAW,GAAC,EAAhB;CAAmB,QAAIsQ,EAAE,GAAChK,KAAK,CAACC,QAAN,CAAevG,WAAf,CAAP;CAAmC/lB,IAAAA,MAAM,CAACo2B,cAAc,IAAE,CAAjB,CAAN,GAA0BC,EAA1B;CAA6B,WAAOF,UAAU,CAAC,YAAD,CAAV,CAAyBpQ,WAAzB,EAAqCuB,MAArC,CAAP;CAAoD;;CAAA,MAAIgP,aAAa,GAAC,EAAlB;;CAAqB,WAASC,iBAAT,CAA2BzoB,OAA3B,EAAmC;CAAC,QAAI0oB,MAAM,GAACF,aAAa,CAACxoB,OAAD,CAAxB;;CAAkC,QAAG0oB,MAAM,KAAGz9B,SAAZ,EAAsB;CAAC,aAAO0qB,gBAAgB,CAAC3V,OAAD,CAAvB;CAAiC;;CAAA,WAAO0oB,MAAP;CAAc;;CAAA,MAAIC,mBAAmB,GAAC,EAAxB;;CAA2B,WAASC,wBAAT,CAAkCC,MAAlC,EAAyCrP,MAAzC,EAAgD4D,UAAhD,EAA2DgC,IAA3D,EAAgE;CAACyJ,IAAAA,MAAM,GAACF,mBAAmB,CAACE,MAAD,CAA1B;CAAmCrP,IAAAA,MAAM,GAAC+E,KAAK,CAAC4G,OAAN,CAAc3L,MAAd,CAAP;CAA6B4D,IAAAA,UAAU,GAACqL,iBAAiB,CAACrL,UAAD,CAA5B;CAAyCyL,IAAAA,MAAM,CAACrP,MAAD,EAAQ4D,UAAR,EAAmB,IAAnB,EAAwBgC,IAAxB,CAAN;CAAoC;;CAAA,WAAS0J,uBAAT,CAAiCD,MAAjC,EAAwC;CAAC,QAAI5yB,EAAE,GAAC0yB,mBAAmB,CAACh9B,MAA3B;CAAkCg9B,IAAAA,mBAAmB,CAACrrB,IAApB,CAAyBurB,MAAzB;CAAiC,WAAO5yB,EAAP;CAAU;;CAAA,WAAS8yB,mBAAT,CAA6BvL,QAA7B,EAAsC2E,QAAtC,EAA+C;CAAC,QAAI+E,CAAC,GAAC,IAAIxrB,KAAJ,CAAU8hB,QAAV,CAAN;;CAA0B,SAAI,IAAIzsB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACysB,QAAd,EAAuB,EAAEzsB,CAAzB,EAA2B;CAACm2B,MAAAA,CAAC,CAACn2B,CAAD,CAAD,GAAKm3B,qBAAqB,CAACh2B,MAAM,CAAC,CAACiwB,QAAQ,IAAE,CAAX,IAAcpxB,CAAf,CAAP,EAAyB,eAAaA,CAAtC,CAA1B;CAAmE;;CAAA,WAAOm2B,CAAP;CAAS;;CAAA,MAAI8B,uBAAuB,GAAC,EAA5B;;CAA+B,WAASC,yBAAT,CAAmCzL,QAAnC,EAA4C2E,QAA5C,EAAqD;CAAC,QAAIhC,KAAK,GAAC4I,mBAAmB,CAACvL,QAAD,EAAU2E,QAAV,CAA7B;;CAAiD,QAAI+G,OAAO,GAAC/I,KAAK,CAAC,CAAD,CAAjB;CAAqB,QAAIgJ,aAAa,GAACD,OAAO,CAAChyB,IAAR,GAAa,IAAb,GAAkBipB,KAAK,CAACr0B,KAAN,CAAY,CAAZ,EAAey0B,GAAf,CAAmB,UAAS8E,CAAT,EAAW;CAAC,aAAOA,CAAC,CAACnuB,IAAT;CAAc,KAA7C,EAA+CkE,IAA/C,CAAoD,GAApD,CAAlB,GAA2E,GAA7F;CAAiG,QAAIguB,QAAQ,GAACJ,uBAAuB,CAACG,aAAD,CAApC;;CAAoD,QAAGC,QAAQ,KAAGn+B,SAAd,EAAwB;CAAC,aAAOm+B,QAAP;CAAgB;;CAAA,QAAIC,MAAM,GAAC,CAAC,SAAD,CAAX;CAAuB,QAAIjK,IAAI,GAAC,CAAC8J,OAAD,CAAT;CAAmB,QAAIrG,QAAQ,GAAC,EAAb;;CAAgB,SAAI,IAAI9xB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACysB,QAAQ,GAAC,CAAvB,EAAyB,EAAEzsB,CAA3B,EAA6B;CAAC8xB,MAAAA,QAAQ,IAAE,CAAC9xB,CAAC,KAAG,CAAJ,GAAM,IAAN,GAAW,EAAZ,IAAgB,KAAhB,GAAsBA,CAAhC;CAAkCs4B,MAAAA,MAAM,CAAC/rB,IAAP,CAAY,YAAUvM,CAAtB;CAAyBquB,MAAAA,IAAI,CAAC9hB,IAAL,CAAU6iB,KAAK,CAAC,IAAEpvB,CAAH,CAAf;CAAsB;;CAAA,QAAIu4B,YAAY,GAACpT,qBAAqB,CAAC,kBAAgBiT,aAAjB,CAAtC;CAAsE,QAAII,YAAY,GAAC,qBAAmBD,YAAnB,GAAgC,uCAAjD;CAAyF,QAAI7qB,MAAM,GAAC,CAAX;;CAAa,SAAI,IAAI1N,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACysB,QAAQ,GAAC,CAAvB,EAAyB,EAAEzsB,CAA3B,EAA6B;CAACw4B,MAAAA,YAAY,IAAE,gBAAcx4B,CAAd,GAAgB,YAAhB,GAA6BA,CAA7B,GAA+B,4BAA/B,IAA6D0N,MAAM,GAAC,MAAIA,MAAL,GAAY,EAA/E,IAAmF,MAAjG;CAAwGA,MAAAA,MAAM,IAAE0hB,KAAK,CAACpvB,CAAC,GAAC,CAAH,CAAL,CAAW,gBAAX,CAAR;CAAqC;;CAAAw4B,IAAAA,YAAY,IAAE,+BAA6B1G,QAA7B,GAAsC,MAApD;;CAA2D,SAAI,IAAI9xB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACysB,QAAQ,GAAC,CAAvB,EAAyB,EAAEzsB,CAA3B,EAA6B;CAAC,UAAGovB,KAAK,CAACpvB,CAAC,GAAC,CAAH,CAAL,CAAW,cAAX,CAAH,EAA8B;CAACw4B,QAAAA,YAAY,IAAE,gBAAcx4B,CAAd,GAAgB,mBAAhB,GAAoCA,CAApC,GAAsC,MAApD;CAA2D;CAAC;;CAAA,QAAG,CAACm4B,OAAO,CAAClB,MAAZ,EAAmB;CAACuB,MAAAA,YAAY,IAAE,mDAAd;CAAkE;;CAAAA,IAAAA,YAAY,IAAE,MAAd;CAAqBF,IAAAA,MAAM,CAAC/rB,IAAP,CAAYisB,YAAZ;CAA0B,QAAInG,eAAe,GAACf,IAAI,CAAChM,QAAD,EAAUgT,MAAV,CAAJ,CAAsB/xB,KAAtB,CAA4B,IAA5B,EAAiC8nB,IAAjC,CAApB;CAA2DgK,IAAAA,QAAQ,GAACN,uBAAuB,CAAC1F,eAAD,CAAhC;CAAkD4F,IAAAA,uBAAuB,CAACG,aAAD,CAAvB,GAAuCC,QAAvC;CAAgD,WAAOA,QAAP;CAAgB;;CAAA,WAASI,cAAT,CAAwBhQ,MAAxB,EAA+B;CAAC,QAAGA,MAAM,GAAC,CAAV,EAAY;CAACqL,MAAAA,kBAAkB,CAACrL,MAAD,CAAlB,CAA2BuL,QAA3B,IAAqC,CAArC;CAAuC;CAAC;;CAAA,WAAS0E,uBAAT,CAAiCjQ,MAAjC,EAAwC;CAAC,QAAIvB,WAAW,GAACsG,KAAK,CAAC4G,OAAN,CAAc3L,MAAd,CAAhB;CAAsCkI,IAAAA,cAAc,CAACzJ,WAAD,CAAd;;CAA4B6M,IAAAA,cAAc,CAACtL,MAAD,CAAd;CAAuB;;CAAA,WAASkQ,kBAAT,CAA4Bzf,IAA5B,EAAiC0f,IAAjC,EAAsC;CAAC1f,IAAAA,IAAI,GAACie,qBAAqB,CAACje,IAAD,EAAM,mBAAN,CAA1B;CAAqD,QAAI0a,CAAC,GAAC1a,IAAI,CAAC,sBAAD,CAAJ,CAA6B0f,IAA7B,CAAN;CAAyC,WAAOpL,KAAK,CAACC,QAAN,CAAemG,CAAf,CAAP;CAAyB;;CAAA,WAASiF,WAAT,CAAqBC,IAArB,EAA0BC,KAA1B,EAAgC;CAAC,QAAIC,IAAI,GAAC,IAAIjrB,IAAJ,CAAS5M,MAAM,CAAC23B,IAAI,IAAE,CAAP,CAAN,GAAgB,GAAzB,CAAT;CAAuC33B,IAAAA,MAAM,CAAC43B,KAAK,IAAE,CAAR,CAAN,GAAiBC,IAAI,CAACC,aAAL,EAAjB;CAAsC93B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAN,GAAmBC,IAAI,CAACE,aAAL,EAAnB;CAAwC/3B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAN,GAAmBC,IAAI,CAACG,WAAL,EAAnB;CAAsCh4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACI,UAAL,EAApB;CAAsCj4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACK,WAAL,EAApB;CAAuCl4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACM,cAAL,KAAsB,IAA1C;CAA+Cn4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACO,SAAL,EAApB;CAAqC,QAAIvtB,KAAK,GAAC+B,IAAI,CAACyrB,GAAL,CAASR,IAAI,CAACM,cAAL,EAAT,EAA+B,CAA/B,EAAiC,CAAjC,EAAmC,CAAnC,EAAqC,CAArC,EAAuC,CAAvC,EAAyC,CAAzC,CAAV;CAAsD,QAAIG,IAAI,GAAC,CAACT,IAAI,CAAChW,OAAL,KAAehX,KAAhB,KAAwB,MAAI,EAAJ,GAAO,EAAP,GAAU,EAAlC,IAAsC,CAA/C;CAAiD7K,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBU,IAApB;CAAyB;;CAAA,WAASC,cAAT,CAAwBZ,IAAxB,EAA6BC,KAA7B,EAAmC;CAAC,QAAIC,IAAI,GAAC,IAAIjrB,IAAJ,CAAS5M,MAAM,CAAC23B,IAAI,IAAE,CAAP,CAAN,GAAgB,GAAzB,CAAT;CAAuC33B,IAAAA,MAAM,CAAC43B,KAAK,IAAE,CAAR,CAAN,GAAiBC,IAAI,CAACW,UAAL,EAAjB;CAAmCx4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAN,GAAmBC,IAAI,CAACY,UAAL,EAAnB;CAAqCz4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAN,GAAmBC,IAAI,CAACa,QAAL,EAAnB;CAAmC14B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACc,OAAL,EAApB;CAAmC34B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACe,QAAL,EAApB;CAAoC54B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACgB,WAAL,KAAmB,IAAvC;CAA4C74B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACiB,MAAL,EAApB;CAAkC,QAAIjuB,KAAK,GAAC,IAAI+B,IAAJ,CAASirB,IAAI,CAACgB,WAAL,EAAT,EAA4B,CAA5B,EAA8B,CAA9B,CAAV;CAA2C,QAAIP,IAAI,GAAC,CAACT,IAAI,CAAChW,OAAL,KAAehX,KAAK,CAACgX,OAAN,EAAhB,KAAkC,MAAI,EAAJ,GAAO,EAAP,GAAU,EAA5C,IAAgD,CAAzD;CAA2D7hB,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBU,IAApB;CAAyBt4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoB,EAAEC,IAAI,CAACkB,iBAAL,KAAyB,EAA3B,CAApB;CAAmD,QAAIC,YAAY,GAAC,IAAIpsB,IAAJ,CAASirB,IAAI,CAACgB,WAAL,EAAT,EAA4B,CAA5B,EAA8B,CAA9B,EAAiCE,iBAAjC,EAAjB;CAAsE,QAAIE,YAAY,GAACpuB,KAAK,CAACkuB,iBAAN,EAAjB;CAA2C,QAAIG,GAAG,GAAC,CAACF,YAAY,IAAEC,YAAd,IAA4BpB,IAAI,CAACkB,iBAAL,MAA0B11B,IAAI,CAAC4H,GAAL,CAASguB,YAAT,EAAsBD,YAAtB,CAAvD,IAA4F,CAApG;CAAsGh5B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBsB,GAApB;CAAwB;;CAAA,WAASC,WAAT,CAAqBvB,KAArB,EAA2B;CAAC,QAAIC,IAAI,GAAC,IAAIjrB,IAAJ,CAAS5M,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoB,IAA7B,EAAkC53B,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAxC,EAAsD53B,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAA5D,EAA0E53B,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAhF,EAA6F53B,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAnG,EAAgH53B,MAAM,CAAC43B,KAAK,IAAE,CAAR,CAAtH,EAAiI,CAAjI,CAAT;CAA6I,QAAIsB,GAAG,GAACl5B,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAd;CAA4B,QAAIwB,aAAa,GAACvB,IAAI,CAACkB,iBAAL,EAAlB;CAA2C,QAAIluB,KAAK,GAAC,IAAI+B,IAAJ,CAASirB,IAAI,CAACgB,WAAL,EAAT,EAA4B,CAA5B,EAA8B,CAA9B,CAAV;CAA2C,QAAIG,YAAY,GAAC,IAAIpsB,IAAJ,CAASirB,IAAI,CAACgB,WAAL,EAAT,EAA4B,CAA5B,EAA8B,CAA9B,EAAiCE,iBAAjC,EAAjB;CAAsE,QAAIE,YAAY,GAACpuB,KAAK,CAACkuB,iBAAN,EAAjB;CAA2C,QAAIM,SAAS,GAACh2B,IAAI,CAAC4H,GAAL,CAASguB,YAAT,EAAsBD,YAAtB,CAAd;;CAAkD,QAAGE,GAAG,GAAC,CAAP,EAAS;CAACl5B,MAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoB5Z,MAAM,CAACgb,YAAY,IAAEC,YAAd,IAA4BI,SAAS,IAAED,aAAxC,CAA1B;CAAiF,KAA3F,MAAgG,IAAGF,GAAG,GAAC,CAAJ,KAAQG,SAAS,IAAED,aAAnB,CAAH,EAAqC;CAAC,UAAIE,YAAY,GAACj2B,IAAI,CAACzB,GAAL,CAASq3B,YAAT,EAAsBD,YAAtB,CAAjB;CAAqD,UAAIO,UAAU,GAACL,GAAG,GAAC,CAAJ,GAAMG,SAAN,GAAgBC,YAA/B;CAA4CzB,MAAAA,IAAI,CAAC2B,OAAL,CAAa3B,IAAI,CAAChW,OAAL,KAAe,CAAC0X,UAAU,GAACH,aAAZ,IAA2B,GAAvD;CAA4D;;CAAAp5B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACiB,MAAL,EAApB;CAAkC,QAAIR,IAAI,GAAC,CAACT,IAAI,CAAChW,OAAL,KAAehX,KAAK,CAACgX,OAAN,EAAhB,KAAkC,MAAI,EAAJ,GAAO,EAAP,GAAU,EAA5C,IAAgD,CAAzD;CAA2D7hB,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBU,IAApB;CAAyBt4B,IAAAA,MAAM,CAAC43B,KAAK,IAAE,CAAR,CAAN,GAAiBC,IAAI,CAACW,UAAL,EAAjB;CAAmCx4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAN,GAAmBC,IAAI,CAACY,UAAL,EAAnB;CAAqCz4B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,CAAN,IAAS,CAAV,CAAN,GAAmBC,IAAI,CAACa,QAAL,EAAnB;CAAmC14B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACc,OAAL,EAApB;CAAmC34B,IAAAA,MAAM,CAAC43B,KAAK,GAAC,EAAN,IAAU,CAAX,CAAN,GAAoBC,IAAI,CAACe,QAAL,EAApB;CAAoC,WAAOf,IAAI,CAAChW,OAAL,KAAe,GAAf,GAAmB,CAA1B;CAA4B;;CAAA,WAAS4X,WAAT,CAAqBC,QAArB,EAA8BC,QAA9B,EAAuCC,MAAvC,EAA8C;CAAC,QAAIC,WAAW,GAAE,IAAIjtB,IAAJ,EAAD,CAAWisB,WAAX,EAAhB;CAAyC,QAAIiB,MAAM,GAAC,IAAIltB,IAAJ,CAASitB,WAAT,EAAqB,CAArB,EAAuB,CAAvB,CAAX;CAAqC,QAAIE,MAAM,GAAC,IAAIntB,IAAJ,CAASitB,WAAT,EAAqB,CAArB,EAAuB,CAAvB,CAAX;CAAqC,QAAIZ,YAAY,GAACa,MAAM,CAACf,iBAAP,EAAjB;CAA4C,QAAIC,YAAY,GAACe,MAAM,CAAChB,iBAAP,EAAjB;CAA4C,QAAIiB,iBAAiB,GAAC32B,IAAI,CAACzB,GAAL,CAASq3B,YAAT,EAAsBD,YAAtB,CAAtB;CAA0Dh5B,IAAAA,MAAM,CAAC05B,QAAQ,IAAE,CAAX,CAAN,GAAoBM,iBAAiB,GAAC,EAAtC;CAAyCh6B,IAAAA,MAAM,CAAC25B,QAAQ,IAAE,CAAX,CAAN,GAAoB3b,MAAM,CAACib,YAAY,IAAED,YAAf,CAA1B;;CAAuD,aAASiB,WAAT,CAAqBpC,IAArB,EAA0B;CAAC,UAAIqC,KAAK,GAACrC,IAAI,CAACsC,YAAL,GAAoBD,KAApB,CAA0B,mBAA1B,CAAV;CAAyD,aAAOA,KAAK,GAACA,KAAK,CAAC,CAAD,CAAN,GAAU,KAAtB;CAA4B;;CAAA,QAAIE,UAAU,GAACH,WAAW,CAACH,MAAD,CAA1B;CAAmC,QAAIO,UAAU,GAACJ,WAAW,CAACF,MAAD,CAA1B;CAAmC,QAAIO,aAAa,GAACl6B,YAAY,CAACg6B,UAAD,CAA9B;CAA2C,QAAIG,aAAa,GAACn6B,YAAY,CAACi6B,UAAD,CAA9B;;CAA2C,QAAGrB,YAAY,GAACC,YAAhB,EAA6B;CAACj5B,MAAAA,MAAM,CAAC45B,MAAM,IAAE,CAAT,CAAN,GAAkBU,aAAlB;CAAgCt6B,MAAAA,MAAM,CAAC45B,MAAM,GAAC,CAAP,IAAU,CAAX,CAAN,GAAoBW,aAApB;CAAkC,KAAhG,MAAoG;CAACv6B,MAAAA,MAAM,CAAC45B,MAAM,IAAE,CAAT,CAAN,GAAkBW,aAAlB;CAAgCv6B,MAAAA,MAAM,CAAC45B,MAAM,GAAC,CAAP,IAAU,CAAX,CAAN,GAAoBU,aAApB;CAAkC;CAAC;;CAAA,WAASE,UAAT,CAAoBd,QAApB,EAA6BC,QAA7B,EAAsCC,MAAtC,EAA6C;CAAC,QAAGY,UAAU,CAACC,MAAd,EAAqB;CAAOD,IAAAA,UAAU,CAACC,MAAX,GAAkB,IAAlB;;CAAuBhB,IAAAA,WAAW,CAACC,QAAD,EAAUC,QAAV,EAAmBC,MAAnB,CAAX;CAAsC;;CAAA,WAASc,MAAT,GAAiB;CAACp+B,IAAAA,KAAK,CAAC,4BAAD,CAAL;CAAoC;;CAAA,WAASq+B,cAAT,CAAwBnzB,CAAxB,EAA0B;CAAC,WAAOA,CAAC,GAAC,CAAF,IAAKA,CAAC,KAAG,CAAJ,IAAO,IAAEA,CAAF,KAAM,CAACozB,QAA1B;CAAmC;;CAAA,WAASC,mBAAT,CAA6BC,EAA7B,EAAgCC,EAAhC,EAAmC;CAAC5hC,IAAAA,MAAM,CAAC4hC,EAAE,MAAIA,EAAE,GAAC,CAAP,CAAH,CAAN;CAAoB,WAAM,CAACD,EAAE,KAAG,CAAN,IAASC,EAAE,GAAC,UAAlB;CAA6B;;CAAA,WAASC,mBAAT,CAA6BF,EAA7B,EAAgCC,EAAhC,EAAmC;CAAC,WAAM,CAACD,EAAE,KAAG,CAAN,IAAS,CAACC,EAAE,KAAG,CAAN,IAAS,UAAxB;CAAmC;;CAAA,WAASE,MAAT,CAAgBnzB,KAAhB,EAAsBozB,IAAtB,EAA2B;CAAC,QAAGpzB,KAAK,IAAE,CAAV,EAAY;CAAC,aAAOA,KAAP;CAAa;;CAAA,QAAIqzB,IAAI,GAACD,IAAI,IAAE,EAAN,GAAS73B,IAAI,CAACse,GAAL,CAAS,KAAGuZ,IAAI,GAAC,CAAjB,CAAT,GAA6B73B,IAAI,CAAC+3B,GAAL,CAAS,CAAT,EAAWF,IAAI,GAAC,CAAhB,CAAtC;;CAAyD,QAAGpzB,KAAK,IAAEqzB,IAAP,KAAcD,IAAI,IAAE,EAAN,IAAUpzB,KAAK,GAACqzB,IAA9B,CAAH,EAAuC;CAACrzB,MAAAA,KAAK,GAAC,CAAC,CAAD,GAAGqzB,IAAH,GAAQrzB,KAAd;CAAoB;;CAAA,WAAOA,KAAP;CAAa;;CAAA,WAASuzB,MAAT,CAAgBvzB,KAAhB,EAAsBozB,IAAtB,EAA2B;CAAC,QAAGpzB,KAAK,IAAE,CAAV,EAAY;CAAC,aAAOA,KAAP;CAAa;;CAAA,WAAOozB,IAAI,IAAE,EAAN,GAAS,IAAE73B,IAAI,CAACse,GAAL,CAAS,KAAGuZ,IAAI,GAAC,CAAjB,CAAF,GAAsBpzB,KAA/B,GAAqCzE,IAAI,CAAC+3B,GAAL,CAAS,CAAT,EAAWF,IAAX,IAAiBpzB,KAA7D;CAAmE;;CAAA,WAASwzB,YAAT,CAAsBC,MAAtB,EAA6B5Y,OAA7B,EAAqC;CAACxpB,IAAAA,MAAM,CAAC,CAACwpB,OAAO,GAAC,CAAT,MAAc,CAAf,CAAN;CAAwB,QAAI6Y,SAAS,GAACD,MAAd;CAAqB,QAAIE,QAAQ,GAAC9Y,OAAb;;CAAqB,aAAS+Y,UAAT,CAAoBp9B,GAApB,EAAwByZ,IAAxB,EAA6B;CAAC,UAAGA,IAAI,KAAG,QAAP,IAAiBA,IAAI,KAAG,KAA3B,EAAiC;CAAC,YAAGzZ,GAAG,GAAC,CAAP,EAAS;CAACnF,UAAAA,MAAM,CAAC,CAACmF,GAAG,GAAC,CAAL,MAAU,CAAX,CAAN;CAAoBA,UAAAA,GAAG,IAAE,CAAL;CAAO;CAAC,OAAxE,MAA4E;CAACnF,QAAAA,MAAM,CAAC,CAACmF,GAAG,GAAC,CAAL,MAAU,CAAX,CAAN;CAAoB;;CAAA,aAAOA,GAAP;CAAW;;CAAA,aAASq9B,UAAT,CAAoB5jB,IAApB,EAAyB;CAAC,UAAI/e,GAAJ;CAAQyiC,MAAAA,QAAQ,GAACC,UAAU,CAACD,QAAD,EAAU1jB,IAAV,CAAnB;;CAAmC,UAAGA,IAAI,KAAG,QAAV,EAAmB;CAAC/e,QAAAA,GAAG,GAACglB,MAAM,CAACpd,OAAO,CAAC66B,QAAQ,IAAE,CAAX,CAAR,CAAV;CAAiCA,QAAAA,QAAQ,IAAE,CAAV;CAAY,OAAjE,MAAsE,IAAG1jB,IAAI,IAAE,KAAT,EAAe;CAAC/e,QAAAA,GAAG,GAAC,CAACgH,MAAM,CAACy7B,QAAQ,IAAE,CAAX,CAAP,EAAqBz7B,MAAM,CAACy7B,QAAQ,GAAC,CAAT,IAAY,CAAb,CAA3B,CAAJ;CAAgDA,QAAAA,QAAQ,IAAE,CAAV;CAAY,OAA5E,MAAgF;CAACtiC,QAAAA,MAAM,CAAC,CAACsiC,QAAQ,GAAC,CAAV,MAAe,CAAhB,CAAN;CAAyB1jB,QAAAA,IAAI,GAAC,KAAL;CAAW/e,QAAAA,GAAG,GAACgH,MAAM,CAACy7B,QAAQ,IAAE,CAAX,CAAV;CAAwBA,QAAAA,QAAQ,IAAE,CAAV;CAAY;;CAAA,aAAOziC,GAAP;CAAW;;CAAA,QAAIA,GAAG,GAAC,EAAR;CAAW,QAAIypB,IAAJ,EAASrK,IAAT,EAAcwjB,OAAd;;CAAsB,WAAM,CAAN,EAAQ;CAAC,UAAIC,cAAc,GAACL,SAAnB;CAA6B/Y,MAAAA,IAAI,GAACliB,KAAK,CAACi7B,SAAS,IAAE,CAAZ,CAAV;CAAyB,UAAG/Y,IAAI,KAAG,CAAV,EAAY;CAAMrK,MAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;;CAA2B,UAAG/Y,IAAI,IAAE,EAAT,EAAY;CAAC,YAAIqZ,gBAAgB,GAAC,KAArB;CAA2B,YAAIC,aAAa,GAAC,KAAlB;CAAwB,YAAIC,eAAe,GAAC,KAApB;CAA0B,YAAIC,WAAW,GAAC,KAAhB;CAAsB,YAAIC,WAAW,GAAC,KAAhB;;CAAsBC,QAAAA,SAAS,EAAC,OAAM,CAAN,EAAQ;CAAC,kBAAO/jB,IAAP;CAAa,iBAAK,EAAL;CAAQ0jB,cAAAA,gBAAgB,GAAC,IAAjB;CAAsB;;CAAM,iBAAK,EAAL;CAAQC,cAAAA,aAAa,GAAC,IAAd;CAAmB;;CAAM,iBAAK,EAAL;CAAQC,cAAAA,eAAe,GAAC,IAAhB;CAAqB;;CAAM,iBAAK,EAAL;CAAQ,kBAAGC,WAAH,EAAe;CAAC,sBAAME,SAAN;CAAgB,eAAhC,MAAoC;CAACF,gBAAAA,WAAW,GAAC,IAAZ;CAAiB;CAAM;;CAAA,iBAAK,EAAL;CAAQC,cAAAA,WAAW,GAAC,IAAZ;CAAiB;;CAAM;CAAQ,oBAAMC,SAAN;CAAhO;;CAAgPX,UAAAA,SAAS;CAAGpjB,UAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;CAA2B;;CAAA,YAAIY,KAAK,GAAC,CAAV;;CAAY,YAAGhkB,IAAI,IAAE,EAAT,EAAY;CAACgkB,UAAAA,KAAK,GAACT,UAAU,CAAC,KAAD,CAAhB;CAAwBH,UAAAA,SAAS;CAAGpjB,UAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;CAA2B,SAA5E,MAAgF;CAAC,iBAAMpjB,IAAI,IAAE,EAAN,IAAUA,IAAI,IAAE,EAAtB,EAAyB;CAACgkB,YAAAA,KAAK,GAACA,KAAK,GAAC,EAAN,IAAUhkB,IAAI,GAAC,EAAf,CAAN;CAAyBojB,YAAAA,SAAS;CAAGpjB,YAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;CAA2B;CAAC;;CAAA,YAAIa,YAAY,GAAC,KAAjB;CAAA,YAAuBC,SAAS,GAAC,CAAC,CAAlC;;CAAoC,YAAGlkB,IAAI,IAAE,EAAT,EAAY;CAACkkB,UAAAA,SAAS,GAAC,CAAV;CAAYD,UAAAA,YAAY,GAAC,IAAb;CAAkBb,UAAAA,SAAS;CAAGpjB,UAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;;CAA2B,cAAGpjB,IAAI,IAAE,EAAT,EAAY;CAACkkB,YAAAA,SAAS,GAACX,UAAU,CAAC,KAAD,CAApB;CAA4BH,YAAAA,SAAS;CAAG,WAArD,MAAyD;CAAC,mBAAM,CAAN,EAAQ;CAAC,kBAAIe,YAAY,GAACh8B,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAtB;CAAuC,kBAAGe,YAAY,GAAC,EAAb,IAAiBA,YAAY,GAAC,EAAjC,EAAoC;CAAMD,cAAAA,SAAS,GAACA,SAAS,GAAC,EAAV,IAAcC,YAAY,GAAC,EAA3B,CAAV;CAAyCf,cAAAA,SAAS;CAAG;CAAC;;CAAApjB,UAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;CAA2B;;CAAA,YAAGc,SAAS,GAAC,CAAb,EAAe;CAACA,UAAAA,SAAS,GAAC,CAAV;CAAYD,UAAAA,YAAY,GAAC,KAAb;CAAmB;;CAAA,YAAIG,OAAJ;;CAAY,gBAAOz+B,MAAM,CAACC,YAAP,CAAoBoa,IAApB,CAAP;CAAkC,eAAI,GAAJ;CAAQ,gBAAIqkB,QAAQ,GAACl8B,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAlB;;CAAmC,gBAAGiB,QAAQ,IAAE,GAAb,EAAiB;CAACjB,cAAAA,SAAS;CAAGgB,cAAAA,OAAO,GAAC,CAAR;CAAU,aAAxC,MAA4C;CAACA,cAAAA,OAAO,GAAC,CAAR;CAAU;;CAAA;;CAAM,eAAI,GAAJ;CAAQ,gBAAIC,QAAQ,GAACl8B,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAlB;;CAAmC,gBAAGiB,QAAQ,IAAE,GAAb,EAAiB;CAACjB,cAAAA,SAAS;CAAGgB,cAAAA,OAAO,GAAC,CAAR;CAAU,aAAxC,MAA4C;CAACA,cAAAA,OAAO,GAAC,CAAR;CAAU;;CAAA;;CAAM,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQA,YAAAA,OAAO,GAAC,CAAR;CAAU;;CAAM,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQA,YAAAA,OAAO,GAAC,CAAR;CAAU;;CAAM;CAAQA,YAAAA,OAAO,GAAC,IAAR;CAA1U;;CAAuV,YAAGA,OAAH,EAAWhB,SAAS;CAAGpjB,QAAAA,IAAI,GAAC7X,KAAK,CAACi7B,SAAS,GAAC,CAAV,IAAa,CAAd,CAAV;;CAA2B,gBAAOz9B,MAAM,CAACC,YAAP,CAAoBoa,IAApB,CAAP;CAAkC,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ;CAAC,kBAAImb,MAAM,GAACnb,IAAI,IAAE,GAAN,IAAWA,IAAI,IAAE,GAA5B;CAAgCokB,cAAAA,OAAO,GAACA,OAAO,IAAE,CAAjB;CAAmBZ,cAAAA,OAAO,GAACD,UAAU,CAAC,MAAIa,OAAO,GAAC,CAAb,CAAlB;CAAkC,kBAAIE,OAAJ;;CAAY,kBAAGF,OAAO,IAAE,CAAZ,EAAc;CAACZ,gBAAAA,OAAO,GAACxjB,IAAI,IAAE,GAAN,GAAU4iB,mBAAmB,CAACY,OAAO,CAAC,CAAD,CAAR,EAAYA,OAAO,CAAC,CAAD,CAAnB,CAA7B,GAAqDf,mBAAmB,CAACe,OAAO,CAAC,CAAD,CAAR,EAAYA,OAAO,CAAC,CAAD,CAAnB,CAAhF;CAAwG;;CAAA,kBAAGY,OAAO,IAAE,CAAZ,EAAc;CAAC,oBAAIG,KAAK,GAACt5B,IAAI,CAAC+3B,GAAL,CAAS,GAAT,EAAaoB,OAAb,IAAsB,CAAhC;CAAkCZ,gBAAAA,OAAO,GAAC,CAACrI,MAAM,GAAC0H,MAAD,GAAQI,MAAf,EAAuBO,OAAO,GAACe,KAA/B,EAAqCH,OAAO,GAAC,CAA7C,CAAR;CAAwD;;CAAA,kBAAII,UAAU,GAACv5B,IAAI,CAACse,GAAL,CAASia,OAAT,CAAf;CAAiC,kBAAIiB,MAAM,GAAC,EAAX;;CAAc,kBAAGzkB,IAAI,IAAE,GAAN,IAAWA,IAAI,IAAE,GAApB,EAAwB;CAACskB,gBAAAA,OAAO,GAACzB,MAAM,CAACW,OAAD,EAAS,IAAEY,OAAX,CAAN,CAA0Br+B,QAA1B,CAAmC,EAAnC,CAAR;CAA+C,eAAxE,MAA6E,IAAGia,IAAI,IAAE,GAAT,EAAa;CAACskB,gBAAAA,OAAO,GAACrB,MAAM,CAACO,OAAD,EAAS,IAAEY,OAAX,CAAN,CAA0Br+B,QAA1B,CAAmC,EAAnC,CAAR;CAA+Cy9B,gBAAAA,OAAO,GAACv4B,IAAI,CAACse,GAAL,CAASia,OAAT,CAAR;CAA0B,eAAvF,MAA4F,IAAGxjB,IAAI,IAAE,GAAT,EAAa;CAACskB,gBAAAA,OAAO,GAAC,CAACV,eAAe,GAAC,GAAD,GAAK,EAArB,IAAyBY,UAAU,CAACz+B,QAAX,CAAoB,CAApB,CAAjC;CAAwD,eAAtE,MAA2E,IAAGia,IAAI,IAAE,GAAN,IAAWA,IAAI,IAAE,EAApB,EAAuB;CAACykB,gBAAAA,MAAM,GAACb,eAAe,IAAEJ,OAAO,IAAE,CAA1B,GAA4B,IAA5B,GAAiC,EAAxC;;CAA2C,oBAAGA,OAAO,GAAC,CAAX,EAAa;CAACA,kBAAAA,OAAO,GAAC,CAACA,OAAT;CAAiBc,kBAAAA,OAAO,GAAC,CAACE,UAAU,GAAC,CAAZ,EAAez+B,QAAf,CAAwB,EAAxB,CAAR;CAAoC,sBAAIlF,MAAM,GAAC,EAAX;;CAAc,uBAAI,IAAI4F,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC69B,OAAO,CAACjjC,MAAtB,EAA6BoF,CAAC,EAA9B,EAAiC;CAAC5F,oBAAAA,MAAM,CAACmS,IAAP,CAAY,CAAC,KAAG0xB,QAAQ,CAACJ,OAAO,CAAC79B,CAAD,CAAR,EAAY,EAAZ,CAAZ,EAA6BV,QAA7B,CAAsC,EAAtC,CAAZ;CAAuD;;CAAAu+B,kBAAAA,OAAO,GAACzjC,MAAM,CAACiQ,IAAP,CAAY,EAAZ,CAAR;;CAAwB,yBAAMwzB,OAAO,CAACjjC,MAAR,GAAe+iC,OAAO,GAAC,CAA7B,EAA+BE,OAAO,GAAC,MAAIA,OAAZ;CAAoB,iBAArP,MAAyP;CAACA,kBAAAA,OAAO,GAACE,UAAU,CAACz+B,QAAX,CAAoB,EAApB,CAAR;CAAgC;;CAAA,oBAAGia,IAAI,IAAE,EAAT,EAAY;CAACykB,kBAAAA,MAAM,GAACA,MAAM,CAACE,WAAP,EAAP;CAA4BL,kBAAAA,OAAO,GAACA,OAAO,CAACK,WAAR,EAAR;CAA8B;CAAC,eAAra,MAA0a,IAAG3kB,IAAI,IAAE,GAAT,EAAa;CAAC,oBAAGwkB,UAAU,KAAG,CAAhB,EAAkB;CAACF,kBAAAA,OAAO,GAAC,OAAR;CAAgB,iBAAnC,MAAuC;CAACG,kBAAAA,MAAM,GAAC,IAAP;CAAYH,kBAAAA,OAAO,GAACE,UAAU,CAACz+B,QAAX,CAAoB,EAApB,CAAR;CAAgC;CAAC;;CAAA,kBAAGk+B,YAAH,EAAgB;CAAC,uBAAMK,OAAO,CAACjjC,MAAR,GAAe6iC,SAArB,EAA+B;CAACI,kBAAAA,OAAO,GAAC,MAAIA,OAAZ;CAAoB;CAAC;;CAAA,kBAAGd,OAAO,IAAE,CAAZ,EAAc;CAAC,oBAAGE,gBAAH,EAAoB;CAACe,kBAAAA,MAAM,GAAC,MAAIA,MAAX;CAAkB,iBAAvC,MAA4C,IAAGX,WAAH,EAAe;CAACW,kBAAAA,MAAM,GAAC,MAAIA,MAAX;CAAkB;CAAC;;CAAA,kBAAGH,OAAO,CAACx0B,MAAR,CAAe,CAAf,KAAmB,GAAtB,EAA0B;CAAC20B,gBAAAA,MAAM,GAAC,MAAIA,MAAX;CAAkBH,gBAAAA,OAAO,GAACA,OAAO,CAAC5hC,MAAR,CAAe,CAAf,CAAR;CAA0B;;CAAA,qBAAM+hC,MAAM,CAACpjC,MAAP,GAAcijC,OAAO,CAACjjC,MAAtB,GAA6B2iC,KAAnC,EAAyC;CAAC,oBAAGL,aAAH,EAAiB;CAACW,kBAAAA,OAAO,IAAE,GAAT;CAAa,iBAA/B,MAAmC;CAAC,sBAAGT,WAAH,EAAe;CAACS,oBAAAA,OAAO,GAAC,MAAIA,OAAZ;CAAoB,mBAApC,MAAwC;CAACG,oBAAAA,MAAM,GAAC,MAAIA,MAAX;CAAkB;CAAC;CAAC;;CAAAH,cAAAA,OAAO,GAACG,MAAM,GAACH,OAAf;CAAuBA,cAAAA,OAAO,CAAC3zB,KAAR,CAAc,EAAd,EAAkB+O,OAAlB,CAA0B,UAASklB,GAAT,EAAa;CAAChkC,gBAAAA,GAAG,CAACoS,IAAJ,CAAS4xB,GAAG,CAACj+B,UAAJ,CAAe,CAAf,CAAT;CAA4B,eAApE;CAAsE;CAAM;;CAAA,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ,eAAI,GAAJ;CAAQ;CAAC68B,cAAAA,OAAO,GAACD,UAAU,CAAC,QAAD,CAAlB;CAA6B,kBAAIe,OAAJ;;CAAY,kBAAGO,KAAK,CAACrB,OAAD,CAAR,EAAkB;CAACc,gBAAAA,OAAO,GAAC,KAAR;CAAcT,gBAAAA,WAAW,GAAC,KAAZ;CAAkB,eAAnD,MAAwD,IAAG,CAACiB,QAAQ,CAACtB,OAAD,CAAZ,EAAsB;CAACc,gBAAAA,OAAO,GAAC,CAACd,OAAO,GAAC,CAAR,GAAU,GAAV,GAAc,EAAf,IAAmB,KAA3B;CAAiCK,gBAAAA,WAAW,GAAC,KAAZ;CAAkB,eAA1E,MAA8E;CAAC,oBAAIkB,SAAS,GAAC,KAAd;CAAoB,oBAAIC,kBAAkB,GAAC/5B,IAAI,CAAC4H,GAAL,CAASqxB,SAAT,EAAmB,EAAnB,CAAvB;;CAA8C,oBAAGlkB,IAAI,IAAE,GAAN,IAAWA,IAAI,IAAE,EAApB,EAAuB;CAAC+kB,kBAAAA,SAAS,GAAC,IAAV;CAAeb,kBAAAA,SAAS,GAACA,SAAS,IAAE,CAArB;CAAuB,sBAAIe,QAAQ,GAACP,QAAQ,CAAClB,OAAO,CAAC0B,aAAR,CAAsBF,kBAAtB,EAA0Cr0B,KAA1C,CAAgD,GAAhD,EAAqD,CAArD,CAAD,EAAyD,EAAzD,CAArB;;CAAkF,sBAAGuzB,SAAS,GAACe,QAAV,IAAoBA,QAAQ,IAAE,CAAC,CAAlC,EAAoC;CAACjlB,oBAAAA,IAAI,GAAC,CAACA,IAAI,IAAE,GAAN,GAAU,GAAV,GAAc,GAAf,EAAoBrZ,UAApB,CAA+B,CAA/B,CAAL;CAAuCu9B,oBAAAA,SAAS,IAAEe,QAAQ,GAAC,CAApB;CAAsB,mBAAlG,MAAsG;CAACjlB,oBAAAA,IAAI,GAAC,CAACA,IAAI,IAAE,GAAN,GAAU,GAAV,GAAc,GAAf,EAAoBrZ,UAApB,CAA+B,CAA/B,CAAL;CAAuCu9B,oBAAAA,SAAS;CAAG;;CAAAc,kBAAAA,kBAAkB,GAAC/5B,IAAI,CAAC4H,GAAL,CAASqxB,SAAT,EAAmB,EAAnB,CAAnB;CAA0C;;CAAA,oBAAGlkB,IAAI,IAAE,GAAN,IAAWA,IAAI,IAAE,EAApB,EAAuB;CAACskB,kBAAAA,OAAO,GAACd,OAAO,CAAC0B,aAAR,CAAsBF,kBAAtB,CAAR;;CAAkD,sBAAG,cAAcG,IAAd,CAAmBb,OAAnB,CAAH,EAA+B;CAACA,oBAAAA,OAAO,GAACA,OAAO,CAAC9iC,KAAR,CAAc,CAAd,EAAgB,CAAC,CAAjB,IAAoB,GAApB,GAAwB8iC,OAAO,CAAC9iC,KAAR,CAAc,CAAC,CAAf,CAAhC;CAAkD;CAAC,iBAA7J,MAAkK,IAAGwe,IAAI,IAAE,GAAN,IAAWA,IAAI,IAAE,EAApB,EAAuB;CAACskB,kBAAAA,OAAO,GAACd,OAAO,CAAC4B,OAAR,CAAgBJ,kBAAhB,CAAR;;CAA4C,sBAAGxB,OAAO,KAAG,CAAV,IAAajB,cAAc,CAACiB,OAAD,CAA9B,EAAwC;CAACc,oBAAAA,OAAO,GAAC,MAAIA,OAAZ;CAAoB;CAAC;;CAAA,oBAAIn0B,KAAK,GAACm0B,OAAO,CAAC3zB,KAAR,CAAc,GAAd,CAAV;;CAA6B,oBAAGo0B,SAAS,IAAE,CAACnB,eAAf,EAA+B;CAAC,yBAAMzzB,KAAK,CAAC,CAAD,CAAL,CAAS9O,MAAT,GAAgB,CAAhB,IAAmB8O,KAAK,CAAC,CAAD,CAAL,CAASgF,QAAT,CAAkB,GAAlB,CAAnB,KAA4ChF,KAAK,CAAC,CAAD,CAAL,CAAS3O,KAAT,CAAe,CAAC,CAAhB,KAAoB,GAApB,IAAyB2O,KAAK,CAAC,CAAD,CAAL,CAAS3O,KAAT,CAAe,CAAC,CAAhB,KAAoB,GAAzF,CAAN,EAAoG;CAAC2O,oBAAAA,KAAK,CAAC,CAAD,CAAL,GAASA,KAAK,CAAC,CAAD,CAAL,CAAS3O,KAAT,CAAe,CAAf,EAAiB,CAAC,CAAlB,CAAT;CAA8B;CAAC,iBAApK,MAAwK;CAAC,sBAAGoiC,eAAe,IAAEU,OAAO,CAAC7hC,OAAR,CAAgB,GAAhB,KAAsB,CAAC,CAA3C,EAA6C0N,KAAK,CAAC,CAAD,CAAL,IAAU,GAAV;;CAAc,yBAAM+zB,SAAS,GAACc,kBAAkB,EAAlC,EAAqC70B,KAAK,CAAC,CAAD,CAAL,IAAU,GAAV;CAAc;;CAAAm0B,gBAAAA,OAAO,GAACn0B,KAAK,CAAC,CAAD,CAAL,IAAUA,KAAK,CAAC9O,MAAN,GAAa,CAAb,GAAe,MAAI8O,KAAK,CAAC,CAAD,CAAxB,GAA4B,EAAtC,CAAR;CAAkD,oBAAG6P,IAAI,IAAE,EAAT,EAAYskB,OAAO,GAACA,OAAO,CAACK,WAAR,EAAR;;CAA8B,oBAAGnB,OAAO,IAAE,CAAZ,EAAc;CAAC,sBAAGE,gBAAH,EAAoB;CAACY,oBAAAA,OAAO,GAAC,MAAIA,OAAZ;CAAoB,mBAAzC,MAA8C,IAAGR,WAAH,EAAe;CAACQ,oBAAAA,OAAO,GAAC,MAAIA,OAAZ;CAAoB;CAAC;CAAC;;CAAA,qBAAMA,OAAO,CAACjjC,MAAR,GAAe2iC,KAArB,EAA2B;CAAC,oBAAGL,aAAH,EAAiB;CAACW,kBAAAA,OAAO,IAAE,GAAT;CAAa,iBAA/B,MAAmC;CAAC,sBAAGT,WAAW,KAAGS,OAAO,CAAC,CAAD,CAAP,IAAY,GAAZ,IAAiBA,OAAO,CAAC,CAAD,CAAP,IAAY,GAAhC,CAAd,EAAmD;CAACA,oBAAAA,OAAO,GAACA,OAAO,CAAC,CAAD,CAAP,GAAW,GAAX,GAAeA,OAAO,CAAC9iC,KAAR,CAAc,CAAd,CAAvB;CAAwC,mBAA5F,MAAgG;CAAC8iC,oBAAAA,OAAO,GAAC,CAACT,WAAW,GAAC,GAAD,GAAK,GAAjB,IAAsBS,OAA9B;CAAsC;CAAC;CAAC;;CAAA,kBAAGtkB,IAAI,GAAC,EAAR,EAAWskB,OAAO,GAACA,OAAO,CAACK,WAAR,EAAR;CAA8BL,cAAAA,OAAO,CAAC3zB,KAAR,CAAc,EAAd,EAAkB+O,OAAlB,CAA0B,UAASklB,GAAT,EAAa;CAAChkC,gBAAAA,GAAG,CAACoS,IAAJ,CAAS4xB,GAAG,CAACj+B,UAAJ,CAAe,CAAf,CAAT;CAA4B,eAApE;CAAsE;CAAM;;CAAA,eAAI,GAAJ;CAAQ;CAAC,kBAAIoI,GAAG,GAACw0B,UAAU,CAAC,KAAD,CAAlB;CAA0B,kBAAI8B,SAAS,GAACt2B,GAAG,GAACu2B,OAAO,CAACv2B,GAAD,CAAR,GAAc,SAAS1N,MAAxC;CAA+C,kBAAG4iC,YAAH,EAAgBoB,SAAS,GAACp6B,IAAI,CAAC4H,GAAL,CAASwyB,SAAT,EAAmBnB,SAAnB,CAAV;;CAAwC,kBAAG,CAACP,aAAJ,EAAkB;CAAC,uBAAM0B,SAAS,GAACrB,KAAK,EAArB,EAAwB;CAACpjC,kBAAAA,GAAG,CAACoS,IAAJ,CAAS,EAAT;CAAa;CAAC;;CAAA,kBAAGjE,GAAH,EAAO;CAAC,qBAAI,IAAItI,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC4+B,SAAd,EAAwB5+B,CAAC,EAAzB,EAA4B;CAAC7F,kBAAAA,GAAG,CAACoS,IAAJ,CAAS7M,MAAM,CAAC4I,GAAG,MAAI,CAAR,CAAf;CAA2B;CAAC,eAAjE,MAAqE;CAACnO,gBAAAA,GAAG,GAACA,GAAG,CAACqS,MAAJ,CAAWqC,kBAAkB,CAAC,SAAS5S,MAAT,CAAgB,CAAhB,EAAkB2iC,SAAlB,CAAD,EAA8B,IAA9B,CAA7B,CAAJ;CAAsE;;CAAA,kBAAG1B,aAAH,EAAiB;CAAC,uBAAM0B,SAAS,GAACrB,KAAK,EAArB,EAAwB;CAACpjC,kBAAAA,GAAG,CAACoS,IAAJ,CAAS,EAAT;CAAa;CAAC;;CAAA;CAAM;;CAAA,eAAI,GAAJ;CAAQ;CAAC,kBAAG2wB,aAAH,EAAiB/iC,GAAG,CAACoS,IAAJ,CAASuwB,UAAU,CAAC,IAAD,CAAnB;;CAA2B,qBAAM,EAAES,KAAF,GAAQ,CAAd,EAAgB;CAACpjC,gBAAAA,GAAG,CAACoS,IAAJ,CAAS,EAAT;CAAa;;CAAA,kBAAG,CAAC2wB,aAAJ,EAAkB/iC,GAAG,CAACoS,IAAJ,CAASuwB,UAAU,CAAC,IAAD,CAAnB;CAA2B;CAAM;;CAAA,eAAI,GAAJ;CAAQ;CAAC,kBAAIr9B,GAAG,GAACq9B,UAAU,CAAC,MAAD,CAAlB;CAA2B37B,cAAAA,MAAM,CAAC1B,GAAG,IAAE,CAAN,CAAN,GAAetF,GAAG,CAACS,MAAnB;CAA0B;CAAM;;CAAA,eAAI,GAAJ;CAAQ;CAACT,cAAAA,GAAG,CAACoS,IAAJ,CAASqX,IAAT;CAAe;CAAM;;CAAA;CAAQ;CAAC,mBAAI,IAAI5jB,CAAC,GAACg9B,cAAV,EAAyBh9B,CAAC,GAAC28B,SAAS,GAAC,CAArC,EAAuC38B,CAAC,EAAxC,EAA2C;CAAC7F,gBAAAA,GAAG,CAACoS,IAAJ,CAAS7K,KAAK,CAAC1B,CAAC,IAAE,CAAJ,CAAd;CAAsB;CAAC;CAApjI;;CAAqjI28B,QAAAA,SAAS,IAAE,CAAX;CAAa,OAAz8K,MAA68K;CAACxiC,QAAAA,GAAG,CAACoS,IAAJ,CAASqX,IAAT;CAAe+Y,QAAAA,SAAS,IAAE,CAAX;CAAa;CAAC;;CAAA,WAAOxiC,GAAP;CAAW;;CAAA,WAAS2kC,aAAT,CAAuBzQ,IAAvB,EAA4B;CAAC,QAAG,CAACA,IAAD,IAAO,CAACA,IAAI,CAAC0Q,MAAb,IAAqB,CAAC1Q,IAAI,CAAC0Q,MAAL,CAAY54B,IAArC,EAA0C;CAAC,aAAM,CAAC,IAAD,EAAM,EAAN,EAAS,EAAT,CAAN;CAAmB;;CAAA,IAAWkoB,IAAI,CAAC0Q,MAAL,CAAYz/B,QAAZ;CAAuB,QAAI0/B,QAAQ,GAAC3Q,IAAI,CAAC0Q,MAAL,CAAY54B,IAAzB;CAA8B,QAAInH,GAAG,GAAC,GAAR;CAAY,QAAIigC,KAAK,GAAC,IAAV;;CAAe,SAAI,IAAIj/B,CAAR,IAAaquB,IAAb,EAAkB;CAAC,UAAI8H,CAAC,GAAC9H,IAAI,CAACruB,CAAD,CAAV;;CAAc,UAAG,CAACi/B,KAAJ,EAAU;CAACjgC,QAAAA,GAAG,IAAE,IAAL;CAAU;;CAAAigC,MAAAA,KAAK,GAAC,KAAN;;CAAY,UAAG,OAAO9I,CAAP,IAAU,QAAV,IAAoB,OAAOA,CAAP,IAAU,QAAjC,EAA0C;CAACn3B,QAAAA,GAAG,IAAEm3B,CAAL;CAAO,OAAlD,MAAsD;CAACn3B,QAAAA,GAAG,IAAE,MAAI,OAAOm3B,CAAX,GAAa,GAAlB;CAAsB;CAAC;;CAAAn3B,IAAAA,GAAG,IAAE,GAAL;CAAS,QAAI84B,MAAM,GAACzJ,IAAI,CAAC0Q,MAAL,CAAYjH,MAAvB;CAA8BzJ,IAAAA,IAAI,GAACyJ,MAAM,GAACA,MAAM,CAACtxB,SAAR,GAAkB,EAA7B;CAAgC,QAAGy4B,KAAH,EAASjgC,GAAG,GAAC,EAAJ;CAAO,WAAM,CAACqvB,IAAD,EAAM2Q,QAAN,EAAehgC,GAAf,CAAN;CAA0B;;CAAA,WAASkgC,4BAAT,CAAsCxrB,KAAtC,EAA4C;CAAC,QAAIyrB,SAAS,GAACr2B,YAAY,EAA1B;CAA6B,QAAIs2B,SAAS,GAACD,SAAS,CAACjjC,WAAV,CAAsB,iBAAtB,CAAd;CAAuD,QAAImjC,UAAU,GAACF,SAAS,CAACjjC,WAAV,CAAsB,2BAAtB,CAAf;CAAkE,QAAIojC,SAAS,GAACH,SAAS,CAACnjC,OAAV,CAAkB,IAAlB,EAAuBwI,IAAI,CAACzB,GAAL,CAASq8B,SAAT,EAAmBC,UAAnB,CAAvB,IAAuD,CAArE;CAAuEF,IAAAA,SAAS,GAACA,SAAS,CAACpkC,KAAV,CAAgBukC,SAAhB,CAAV;;CAAqC,QAAG5rB,KAAK,GAAC,EAAT,EAAY;CAACzW,MAAAA,QAAQ,CAAC,yCAAD,CAAR;CAAoD;;CAAA,QAAGyW,KAAK,GAAC,CAAN,IAAS,OAAO6rB,qBAAP,IAA8B,WAA1C,EAAsD;CAACtiC,MAAAA,QAAQ,CAAC,gNAAD,CAAR;CAA2NyW,MAAAA,KAAK,IAAE,CAAP;CAASA,MAAAA,KAAK,IAAE,EAAP;CAAU;;CAAA,QAAI8rB,UAAU,GAAC,IAAf;;CAAoB,QAAG9rB,KAAK,GAAC,GAAT,EAAa;CAAC8rB,MAAAA,UAAU,GAACV,aAAa,CAACt4B,SAAD,CAAxB;;CAAoC,aAAMg5B,UAAU,CAAC,CAAD,CAAV,CAAc9wB,QAAd,CAAuB,cAAvB,CAAN,EAA6C8wB,UAAU,GAACV,aAAa,CAACU,UAAU,CAAC,CAAD,CAAX,CAAxB;CAAwC;;CAAA,QAAIC,KAAK,GAACN,SAAS,CAACj1B,KAAV,CAAgB,IAAhB,CAAV;CAAgCi1B,IAAAA,SAAS,GAAC,EAAV;CAAa,QAAIO,YAAY,GAAC,IAAIC,MAAJ,CAAW,mCAAX,CAAjB;CAAiE,QAAIC,SAAS,GAAC,IAAID,MAAJ,CAAW,6BAAX,CAAd;CAAwD,QAAIE,QAAQ,GAAC,IAAIF,MAAJ,CAAW,mCAAX,CAAb;;CAA6D,SAAI,IAAI70B,CAAR,IAAa20B,KAAb,EAAmB;CAAC,UAAIK,IAAI,GAACL,KAAK,CAAC30B,CAAD,CAAd;CAAkB,UAAIi1B,UAAU,GAAC,EAAf;CAAkB,UAAIp5B,IAAI,GAAC,EAAT;CAAY,UAAIq5B,MAAM,GAAC,CAAX;CAAa,UAAIC,MAAM,GAAC,CAAX;CAAa,UAAIv2B,KAAK,GAACm2B,QAAQ,CAACr2B,IAAT,CAAcs2B,IAAd,CAAV;;CAA8B,UAAGp2B,KAAK,IAAEA,KAAK,CAAC9O,MAAN,IAAc,CAAxB,EAA0B;CAACmlC,QAAAA,UAAU,GAACr2B,KAAK,CAAC,CAAD,CAAhB;CAAoB/C,QAAAA,IAAI,GAAC+C,KAAK,CAAC,CAAD,CAAV;CAAcs2B,QAAAA,MAAM,GAACt2B,KAAK,CAAC,CAAD,CAAZ;CAAgBu2B,QAAAA,MAAM,GAACv2B,KAAK,CAAC,CAAD,CAAZ;CAAgB,OAA7F,MAAiG;CAACA,QAAAA,KAAK,GAACg2B,YAAY,CAACl2B,IAAb,CAAkBs2B,IAAlB,CAAN;CAA8B,YAAG,CAACp2B,KAAJ,EAAUA,KAAK,GAACk2B,SAAS,CAACp2B,IAAV,CAAes2B,IAAf,CAAN;;CAA2B,YAAGp2B,KAAK,IAAEA,KAAK,CAAC9O,MAAN,IAAc,CAAxB,EAA0B;CAACmlC,UAAAA,UAAU,GAACr2B,KAAK,CAAC,CAAD,CAAhB;CAAoB/C,UAAAA,IAAI,GAAC+C,KAAK,CAAC,CAAD,CAAV;CAAcs2B,UAAAA,MAAM,GAACt2B,KAAK,CAAC,CAAD,CAAZ;CAAgBu2B,UAAAA,MAAM,GAACv2B,KAAK,CAAC,CAAD,CAAL,GAAS,CAAhB;CAAkB,SAA/F,MAAmG;CAACy1B,UAAAA,SAAS,IAAEW,IAAI,GAAC,IAAhB;CAAqB;CAAS;CAAC;;CAAA,UAAII,aAAa,GAAC,KAAlB;;CAAwB,UAAGxsB,KAAK,GAAC,CAAT,EAAW;CAAC,YAAIvO,IAAI,GAACo6B,qBAAqB,CAACY,mBAAtB,CAA0C;CAACL,UAAAA,IAAI,EAACE,MAAN;CAAaC,UAAAA,MAAM,EAACA;CAApB,SAA1C,CAAT;CAAgFC,QAAAA,aAAa,GAAC/6B,IAAI,IAAEA,IAAI,CAACi7B,MAAzB;;CAAgC,YAAGF,aAAH,EAAiB;CAAC,cAAGxsB,KAAK,GAAC,EAAT,EAAY;CAACvO,YAAAA,IAAI,CAACi7B,MAAL,GAAYj7B,IAAI,CAACi7B,MAAL,CAAY9R,SAAZ,CAAsBnpB,IAAI,CAACi7B,MAAL,CAAYvlC,OAAZ,CAAoB,KAApB,EAA0B,GAA1B,EAA+BqB,WAA/B,CAA2C,GAA3C,IAAgD,CAAtE,CAAZ;CAAqF;;CAAAijC,UAAAA,SAAS,IAAE,YAAUY,UAAV,GAAqB,IAArB,GAA0B56B,IAAI,CAACi7B,MAA/B,GAAsC,GAAtC,GAA0Cj7B,IAAI,CAAC26B,IAA/C,GAAoD,GAApD,GAAwD36B,IAAI,CAAC86B,MAA7D,GAAoE,KAA/E;CAAqF;CAAC;;CAAA,UAAGvsB,KAAK,GAAC,EAAN,IAAU,CAACwsB,aAAd,EAA4B;CAAC,YAAGxsB,KAAK,GAAC,EAAT,EAAY;CAAC/M,UAAAA,IAAI,GAACA,IAAI,CAAC2nB,SAAL,CAAe3nB,IAAI,CAAC9L,OAAL,CAAa,KAAb,EAAmB,GAAnB,EAAwBqB,WAAxB,CAAoC,GAApC,IAAyC,CAAxD,CAAL;CAAgE;;CAAAijC,QAAAA,SAAS,IAAE,CAACe,aAAa,GAAC,YAAUH,UAAX,GAAsB,YAAUA,UAA9C,IAA0D,IAA1D,GAA+Dp5B,IAA/D,GAAoE,GAApE,GAAwEq5B,MAAxE,GAA+E,GAA/E,GAAmFC,MAAnF,GAA0F,KAArG;CAA2G;;CAAA,UAAGvsB,KAAK,GAAC,GAAN,IAAW8rB,UAAU,CAAC,CAAD,CAAxB,EAA4B;CAAC,YAAGA,UAAU,CAAC,CAAD,CAAV,IAAeO,UAAf,IAA2BP,UAAU,CAAC,CAAD,CAAV,CAAc5kC,MAAd,GAAqB,CAAnD,EAAqD;CAACukC,UAAAA,SAAS,GAACA,SAAS,CAACtkC,OAAV,CAAkB,MAAlB,EAAyB,EAAzB,CAAV;CAAuCskC,UAAAA,SAAS,IAAE,mBAAiBK,UAAU,CAAC,CAAD,CAA3B,GAA+BA,UAAU,CAAC,CAAD,CAAzC,GAA6C,IAAxD;CAA6D;;CAAAA,QAAAA,UAAU,GAACV,aAAa,CAACU,UAAU,CAAC,CAAD,CAAX,CAAxB;CAAwC;CAAC;;CAAAL,IAAAA,SAAS,GAACA,SAAS,CAACtkC,OAAV,CAAkB,MAAlB,EAAyB,EAAzB,CAAV;CAAuC,WAAOskC,SAAP;CAAiB;;CAAA,WAASkB,kBAAT,CAA4B3sB,KAA5B,EAAkC1U,GAAlC,EAAsC;CAAC,QAAG0U,KAAK,GAAC,EAAT,EAAY;CAAC1U,MAAAA,GAAG,GAACA,GAAG,CAACnE,OAAJ,CAAY,MAAZ,EAAmB,EAAnB,CAAJ;CAA2BmE,MAAAA,GAAG,IAAE,CAACA,GAAG,CAACpE,MAAJ,GAAW,CAAX,GAAa,IAAb,GAAkB,EAAnB,IAAuBskC,4BAA4B,CAACxrB,KAAD,CAAxD;CAAgE;;CAAA,QAAGA,KAAK,GAAC,CAAT,EAAW;CAAC,UAAGA,KAAK,GAAC,CAAT,EAAW;CAAC/b,QAAAA,OAAO,CAAC8D,KAAR,CAAcuD,GAAd;CAAmB,OAA/B,MAAoC,IAAG0U,KAAK,GAAC,CAAT,EAAW;CAAC/b,QAAAA,OAAO,CAACG,IAAR,CAAakH,GAAb;CAAkB,OAA9B,MAAmC,IAAG0U,KAAK,GAAC,GAAT,EAAa;CAAC/b,QAAAA,OAAO,CAAC0P,IAAR,CAAarI,GAAb;CAAkB,OAAhC,MAAqC,IAAG0U,KAAK,GAAC,GAAT,EAAa;CAAC/b,QAAAA,OAAO,CAAC2oC,KAAR,CAActhC,GAAd;CAAmB,OAAjC,MAAqC;CAACrH,QAAAA,OAAO,CAACC,GAAR,CAAYoH,GAAZ;CAAiB;CAAC,KAAhL,MAAqL,IAAG0U,KAAK,GAAC,CAAT,EAAW;CAAChZ,MAAAA,GAAG,CAACsE,GAAD,CAAH;CAAS,KAArB,MAAyB;CAACpC,MAAAA,GAAG,CAACoC,GAAD,CAAH;CAAS;CAAC;;CAAA,WAASuhC,eAAT,CAAyB7sB,KAAzB,EAA+BgpB,MAA/B,EAAsC5Y,OAAtC,EAA8C;CAAC,QAAIlc,MAAM,GAAC60B,YAAY,CAACC,MAAD,EAAQ5Y,OAAR,CAAvB;CAAwC,QAAI9kB,GAAG,GAACR,iBAAiB,CAACoJ,MAAD,EAAQ,CAAR,CAAzB;;CAAoCy4B,IAAAA,kBAAkB,CAAC3sB,KAAD,EAAO1U,GAAP,CAAlB;CAA8B;;CAAA,WAASwhC,wBAAT,GAAmC;CAAC,WAAO,UAAP;CAAkB;;CAAA,WAASC,yBAAT,CAAmCj/B,IAAnC,EAAwC;CAAC,QAAG;CAACrD,MAAAA,UAAU,CAACuiC,IAAX,CAAgBl/B,IAAI,GAACpH,MAAM,CAAC0hB,UAAZ,GAAuB,KAAvB,KAA+B,EAA/C;CAAmD9Z,MAAAA,0BAA0B,CAAC7D,UAAU,CAAC/D,MAAZ,CAA1B;CAA8C,aAAO,CAAP;CAAS,KAA9G,CAA8G,OAAMwL,CAAN,EAAQ;CAAClL,MAAAA,GAAG,CAAC,4DAA0DN,MAAM,CAAC0hB,UAAjE,GAA4E,YAA5E,GAAyFta,IAAzF,GAA8F,yBAA9F,GAAwHoE,CAAzH,CAAH;CAA+H;CAAC;;CAAA,WAAS+6B,uBAAT,CAAiCC,aAAjC,EAA+C;CAAC,QAAIC,OAAO,GAACnhC,MAAM,CAAC9E,MAAnB;CAA0BgmC,IAAAA,aAAa,GAACA,aAAa,KAAG,CAA9B;CAAgCtmC,IAAAA,MAAM,CAACsmC,aAAa,GAACC,OAAf,CAAN;;CAA8B,QAAIC,WAAW,GAACN,wBAAwB,EAAxC;;CAA2C,QAAGI,aAAa,GAACE,WAAjB,EAA6B;CAACpmC,MAAAA,GAAG,CAAC,8CAA4CkmC,aAA5C,GAA0D,2BAA1D,GAAsFE,WAAtF,GAAkG,SAAnG,CAAH;CAAiH,aAAO,KAAP;CAAa;;CAAA,QAAIC,OAAO,GAAC,CAACp4B,CAAD,EAAGq4B,QAAH,KAAcr4B,CAAC,GAAC,CAACq4B,QAAQ,GAACr4B,CAAC,GAACq4B,QAAZ,IAAsBA,QAAlD;;CAA2D,SAAI,IAAIC,OAAO,GAAC,CAAhB,EAAkBA,OAAO,IAAE,CAA3B,EAA6BA,OAAO,IAAE,CAAtC,EAAwC;CAAC,UAAIC,iBAAiB,GAACL,OAAO,IAAE,IAAE,KAAGI,OAAP,CAA7B;CAA6CC,MAAAA,iBAAiB,GAAC18B,IAAI,CAAC4H,GAAL,CAAS80B,iBAAT,EAA2BN,aAAa,GAAC,SAAzC,CAAlB;CAAsE,UAAI7uB,OAAO,GAACvN,IAAI,CAAC4H,GAAL,CAAS00B,WAAT,EAAqBC,OAAO,CAACv8B,IAAI,CAACzB,GAAL,CAAS69B,aAAT,EAAuBM,iBAAvB,CAAD,EAA2C,KAA3C,CAA5B,CAAZ;CAA2F,UAAIC,WAAW,GAACV,yBAAyB,CAAC1uB,OAAD,CAAzC;;CAAmD,UAAGovB,WAAH,EAAe;CAAC,eAAO,IAAP;CAAY;CAAC;;CAAAzmC,IAAAA,GAAG,CAAC,kCAAgCmmC,OAAhC,GAAwC,YAAxC,GAAqD9uB,OAArD,GAA6D,4BAA9D,CAAH;CAA+F,WAAO,KAAP;CAAa;;CAAA,MAAIqvB,GAAG,GAAC,EAAR;;CAAW,WAASC,iBAAT,GAA4B;CAAC,WAAOhpC,WAAW,IAAE,gBAApB;CAAqC;;CAAA,WAASipC,aAAT,GAAwB;CAAC,QAAG,CAACA,aAAa,CAACC,OAAlB,EAA0B;CAAC,UAAIC,IAAI,GAAC,CAAC,OAAOC,SAAP,IAAkB,QAAlB,IAA4BA,SAAS,CAACC,SAAtC,IAAiDD,SAAS,CAACC,SAAV,CAAoB,CAApB,CAAjD,IAAyE,GAA1E,EAA+E7mC,OAA/E,CAAuF,GAAvF,EAA2F,GAA3F,IAAgG,QAAzG;CAAkH,UAAI8mC,GAAG,GAAC;CAAC,gBAAO,UAAR;CAAmB,mBAAU,UAA7B;CAAwC,gBAAO,GAA/C;CAAmD,eAAM,GAAzD;CAA6D,gBAAO,gBAApE;CAAqF,gBAAOH,IAA5F;CAAiG,aAAIH,iBAAiB;CAAtH,OAAR;;CAAkI,WAAI,IAAI14B,CAAR,IAAay4B,GAAb,EAAiB;CAAC,YAAGA,GAAG,CAACz4B,CAAD,CAAH,KAASzO,SAAZ,EAAsB,OAAOynC,GAAG,CAACh5B,CAAD,CAAV,CAAtB,KAAyCg5B,GAAG,CAACh5B,CAAD,CAAH,GAAOy4B,GAAG,CAACz4B,CAAD,CAAV;CAAc;;CAAA,UAAI44B,OAAO,GAAC,EAAZ;;CAAe,WAAI,IAAI54B,CAAR,IAAag5B,GAAb,EAAiB;CAACJ,QAAAA,OAAO,CAACh1B,IAAR,CAAa5D,CAAC,GAAC,GAAF,GAAMg5B,GAAG,CAACh5B,CAAD,CAAtB;CAA2B;;CAAA24B,MAAAA,aAAa,CAACC,OAAd,GAAsBA,OAAtB;CAA8B;;CAAA,WAAOD,aAAa,CAACC,OAArB;CAA6B;;CAAA,WAASK,YAAT,CAAsBC,SAAtB,EAAgCC,WAAhC,EAA4C;CAAC,QAAIC,OAAO,GAAC,CAAZ;CAAcT,IAAAA,aAAa,GAAGroB,OAAhB,CAAwB,UAAS+oB,MAAT,EAAgBhiC,CAAhB,EAAkB;CAAC,UAAIP,GAAG,GAACqiC,WAAW,GAACC,OAApB;CAA4B5gC,MAAAA,MAAM,CAAC0gC,SAAS,GAAC7hC,CAAC,GAAC,CAAZ,IAAe,CAAhB,CAAN,GAAyBP,GAAzB;CAA6BkC,MAAAA,kBAAkB,CAACqgC,MAAD,EAAQviC,GAAR,CAAlB;CAA+BsiC,MAAAA,OAAO,IAAEC,MAAM,CAACpnC,MAAP,GAAc,CAAvB;CAAyB,KAA5J;CAA8J,WAAO,CAAP;CAAS;;CAAA,WAASqnC,kBAAT,CAA4BC,cAA5B,EAA2CC,iBAA3C,EAA6D;CAAC,QAAIZ,OAAO,GAACD,aAAa,EAAzB;CAA4BngC,IAAAA,MAAM,CAAC+gC,cAAc,IAAE,CAAjB,CAAN,GAA0BX,OAAO,CAAC3mC,MAAlC;CAAyC,QAAImnC,OAAO,GAAC,CAAZ;CAAcR,IAAAA,OAAO,CAACtoB,OAAR,CAAgB,UAAS+oB,MAAT,EAAgB;CAACD,MAAAA,OAAO,IAAEC,MAAM,CAACpnC,MAAP,GAAc,CAAvB;CAAyB,KAA1D;CAA4DuG,IAAAA,MAAM,CAACghC,iBAAiB,IAAE,CAApB,CAAN,GAA6BJ,OAA7B;CAAqC,WAAO,CAAP;CAAS;;CAAA,WAASK,SAAT,CAAmB3zB,EAAnB,EAAsB;CAAC,QAAG;CAAC,UAAItB,MAAM,GAACoV,QAAQ,CAACyB,eAAT,CAAyBvV,EAAzB,CAAX;CAAwC1K,MAAAA,EAAE,CAACyJ,KAAH,CAASL,MAAT;CAAiB,aAAO,CAAP;CAAS,KAAtE,CAAsE,OAAMvH,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAOA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAASqrB,cAAT,CAAwB5zB,EAAxB,EAA2B6zB,IAA3B,EAAgC;CAAC,QAAG;CAAC,UAAIn1B,MAAM,GAACoV,QAAQ,CAACyB,eAAT,CAAyBvV,EAAzB,CAAX;CAAwC,UAAIyK,IAAI,GAAC/L,MAAM,CAACC,GAAP,GAAW,CAAX,GAAarJ,EAAE,CAACmN,KAAH,CAAS/D,MAAM,CAAC0C,IAAhB,IAAsB,CAAtB,GAAwB9L,EAAE,CAACuN,MAAH,CAAUnE,MAAM,CAAC0C,IAAjB,IAAuB,CAAvB,GAAyB,CAAvE;CAAyEnO,MAAAA,KAAK,CAAC4gC,IAAI,IAAE,CAAP,CAAL,GAAeppB,IAAf;CAAoB,aAAO,CAAP;CAAS,KAAlJ,CAAkJ,OAAMtT,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAOA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAASurB,QAAT,CAAkB9zB,EAAlB,EAAqBiV,GAArB,EAAyBC,MAAzB,EAAgC6e,IAAhC,EAAqC;CAAC,QAAG;CAAC,UAAIr1B,MAAM,GAACoV,QAAQ,CAACyB,eAAT,CAAyBvV,EAAzB,CAAX;CAAwC,UAAIg0B,GAAG,GAAClgB,QAAQ,CAACkB,OAAT,CAAiBtW,MAAjB,EAAwBuW,GAAxB,EAA4BC,MAA5B,CAAR;CAA4CxiB,MAAAA,MAAM,CAACqhC,IAAI,IAAE,CAAP,CAAN,GAAgBC,GAAhB;CAAoB,aAAO,CAAP;CAAS,KAArH,CAAqH,OAAM78B,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAOA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAAS0rB,QAAT,CAAkBj0B,EAAlB,EAAqBk0B,UAArB,EAAgCC,WAAhC,EAA4CpvB,MAA5C,EAAmDqvB,SAAnD,EAA6D;CAAC,QAAG;CAAC,UAAI11B,MAAM,GAACoV,QAAQ,CAACyB,eAAT,CAAyBvV,EAAzB,CAAX;CAAwC,UAAIq0B,WAAW,GAAC,UAAhB;CAA2B,UAAIp1B,MAAM,GAACk1B,WAAW,GAACE,WAAZ,IAAyBH,UAAU,KAAG,CAAtC,CAAX;CAAoD,UAAII,YAAY,GAAC,gBAAjB;;CAAkC,UAAGr1B,MAAM,IAAE,CAACq1B,YAAT,IAAuBr1B,MAAM,IAAEq1B,YAAlC,EAA+C;CAAC,eAAM,CAAC,EAAP;CAAU;;CAAAh/B,MAAAA,EAAE,CAAC2M,MAAH,CAAUvD,MAAV,EAAiBO,MAAjB,EAAwB8F,MAAxB;CAAgCrL,MAAAA,OAAO,GAAC,CAACgF,MAAM,CAACkG,QAAP,KAAkB,CAAnB,GAAsBnL,UAAU,GAACiF,MAAM,CAACkG,QAAlB,EAA2B,CAAC7O,IAAI,CAACse,GAAL,CAAS5a,UAAT,CAAD,IAAuB,CAAvB,GAAyBA,UAAU,GAAC,CAAX,GAAa,CAAC1D,IAAI,CAAC4H,GAAL,CAAS,CAAC5H,IAAI,CAACue,KAAL,CAAW7a,UAAU,GAAC,UAAtB,CAAV,EAA4C,UAA5C,IAAwD,CAAzD,MAA8D,CAA3E,GAA6E,CAAC,CAAC,CAAC1D,IAAI,CAAC6K,IAAL,CAAU,CAACnH,UAAU,GAAC,EAAE,CAAC,CAACA,UAAF,KAAe,CAAjB,CAAZ,IAAiC,UAA3C,CAAH,KAA4D,CAAlK,GAAoK,CAArN,EAAR,EAAiO/G,MAAM,CAAC0hC,SAAS,IAAE,CAAZ,CAAN,GAAqB16B,OAAO,CAAC,CAAD,CAA7P,EAAiQhH,MAAM,CAAC0hC,SAAS,GAAC,CAAV,IAAa,CAAd,CAAN,GAAuB16B,OAAO,CAAC,CAAD,CAA/R;CAAmS,UAAGgF,MAAM,CAACkO,QAAP,IAAiB3N,MAAM,KAAG,CAA1B,IAA6B8F,MAAM,KAAG,CAAzC,EAA2CrG,MAAM,CAACkO,QAAP,GAAgB,IAAhB;CAAqB,aAAO,CAAP;CAAS,KAAnmB,CAAmmB,OAAMzV,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAOA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAASgsB,SAAT,CAAmBv0B,EAAnB,EAAsBiV,GAAtB,EAA0BC,MAA1B,EAAiC6e,IAAjC,EAAsC;CAAC,QAAG;CAAC,UAAIr1B,MAAM,GAACoV,QAAQ,CAACyB,eAAT,CAAyBvV,EAAzB,CAAX;CAAwC,UAAIg0B,GAAG,GAAClgB,QAAQ,CAACsB,QAAT,CAAkB1W,MAAlB,EAAyBuW,GAAzB,EAA6BC,MAA7B,CAAR;CAA6CxiB,MAAAA,MAAM,CAACqhC,IAAI,IAAE,CAAP,CAAN,GAAgBC,GAAhB;CAAoB,aAAO,CAAP;CAAS,KAAtH,CAAsH,OAAM78B,CAAN,EAAQ;CAAC,UAAG,OAAO7B,EAAP,IAAW,WAAX,IAAwB,EAAE6B,CAAC,YAAY7B,EAAE,CAACuJ,UAAlB,CAA3B,EAAyD,MAAM1H,CAAN;CAAQ,aAAOA,CAAC,CAACoR,KAAT;CAAe;CAAC;;CAAA,WAASisB,YAAT,CAAsBn0B,GAAtB,EAA0B;CAAkB;;CAAA,MAAIsH,MAAM,GAAC,UAASxG,MAAT,EAAgBzJ,IAAhB,EAAqB0J,IAArB,EAA0BxC,IAA1B,EAA+B;CAAC,QAAG,CAACuC,MAAJ,EAAW;CAACA,MAAAA,MAAM,GAAC,IAAP;CAAY;;CAAA,SAAKA,MAAL,GAAYA,MAAZ;CAAmB,SAAKF,KAAL,GAAWE,MAAM,CAACF,KAAlB;CAAwB,SAAK2F,OAAL,GAAa,IAAb;CAAkB,SAAKnQ,EAAL,GAAQnB,EAAE,CAACwQ,SAAH,EAAR;CAAuB,SAAKpO,IAAL,GAAUA,IAAV;CAAe,SAAK0J,IAAL,GAAUA,IAAV;CAAe,SAAKI,QAAL,GAAc,EAAd;CAAiB,SAAK/C,UAAL,GAAgB,EAAhB;CAAmB,SAAKG,IAAL,GAAUA,IAAV;CAAe,GAAxO;;CAAyO,MAAI61B,QAAQ,GAAC,MAAI,EAAjB;CAAoB,MAAIC,SAAS,GAAC,GAAd;CAAkBhrC,EAAAA,MAAM,CAAC2nB,gBAAP,CAAwB1J,MAAM,CAACzT,SAA/B,EAAyC;CAACvH,IAAAA,IAAI,EAAC;CAACoC,MAAAA,GAAG,EAAC,YAAU;CAAC,eAAM,CAAC,KAAKqS,IAAL,GAAUqzB,QAAX,MAAuBA,QAA7B;CAAsC,OAAtD;CAAuDtgC,MAAAA,GAAG,EAAC,UAASkM,GAAT,EAAa;CAACA,QAAAA,GAAG,GAAC,KAAKe,IAAL,IAAWqzB,QAAZ,GAAqB,KAAKrzB,IAAL,IAAW,CAACqzB,QAApC;CAA6C;CAAtH,KAAN;CAA8Hj1B,IAAAA,KAAK,EAAC;CAACzQ,MAAAA,GAAG,EAAC,YAAU;CAAC,eAAM,CAAC,KAAKqS,IAAL,GAAUszB,SAAX,MAAwBA,SAA9B;CAAwC,OAAxD;CAAyDvgC,MAAAA,GAAG,EAAC,UAASkM,GAAT,EAAa;CAACA,QAAAA,GAAG,GAAC,KAAKe,IAAL,IAAWszB,SAAZ,GAAsB,KAAKtzB,IAAL,IAAW,CAACszB,SAArC;CAA+C;CAA1H,KAApI;CAAgQ/kB,IAAAA,QAAQ,EAAC;CAAC5gB,MAAAA,GAAG,EAAC,YAAU;CAAC,eAAOuG,EAAE,CAACmN,KAAH,CAAS,KAAKrB,IAAd,CAAP;CAA2B;CAA3C,KAAzQ;CAAsTsO,IAAAA,QAAQ,EAAC;CAAC3gB,MAAAA,GAAG,EAAC,YAAU;CAAC,eAAOuG,EAAE,CAACwN,QAAH,CAAY,KAAK1B,IAAjB,CAAP;CAA8B;CAA9C;CAA/T,GAAzC;CAA0Z9L,EAAAA,EAAE,CAACqS,MAAH,GAAUA,MAAV;CAAiBrS,EAAAA,EAAE,CAAC+Y,UAAH;CAAgB3I,EAAAA,WAAW,GAAC;CAAC,aAAQ,EAAT;CAAY,cAAS,EAArB;CAAwB,aAAQ,EAAhC;CAAmC,aAAQ,EAA3C;CAA8C,WAAM,EAApD;CAAuD,aAAQ,EAA/D;CAAkE,aAAQ,CAA1E;CAA4E,eAAU,EAAtF;CAAyF,aAAQ,CAAjG;CAAmG,cAAS,EAA5G;CAA+G,cAAS,CAAxH;CAA0H,mBAAc,CAAxI;CAA0I,cAAS,EAAnJ;CAAsJ,cAAS,CAA/J;CAAiK,cAAS,EAA1K;CAA6K,eAAU,GAAvL;CAA2L,aAAQ,EAAnM;CAAsM,cAAS,EAA/M;CAAkN,aAAQ,EAA1N;CAA6N,cAAS,EAAtO;CAAyO,eAAU,EAAnP;CAAsP,cAAS,EAA/P;CAAkQ,cAAS,EAA3Q;CAA8Q,cAAS,EAAvR;CAA0R,cAAS,EAAnS;CAAsS,cAAS,EAA/S;CAAkT,eAAU,EAA5T;CAA+T,aAAQ,EAAvU;CAA0U,cAAS,EAAnV;CAAsV,cAAS,EAA/V;CAAkW,aAAQ,EAA1W;CAA6W,cAAS,EAAtX;CAAyX,aAAQ,EAAjY;CAAoY,YAAO,EAA3Y;CAA8Y,cAAS,EAAvZ;CAA0Z,cAAS,EAAna;CAAsa,aAAQ,EAA9a;CAAib,cAAS,GAA1b;CAA8b,gBAAW,GAAzc;CAA6c,cAAS,GAAtd;CAA0d,cAAS,GAAne;CAAue,cAAS,GAAhf;CAAof,eAAU,GAA9f;CAAkgB,cAAS,GAA3gB;CAA+gB,cAAS,GAAxhB;CAA4hB,eAAU,EAAtiB;CAAyiB,cAAS,EAAljB;CAAqjB,aAAQ,GAA7jB;CAAikB,aAAQ,GAAzkB;CAA6kB,cAAS,GAAtlB;CAA0lB,cAAS,GAAnmB;CAAumB,eAAU,GAAjnB;CAAqnB,eAAU,GAA/nB;CAAmoB,iBAAY,EAA/oB;CAAkpB,cAAS,GAA3pB;CAA+pB,cAAS,GAAxqB;CAA4qB,eAAU,GAAtrB;CAA0rB,aAAQ,GAAlsB;CAAssB,aAAQ,GAA9sB;CAAktB,cAAS,GAA3tB;CAA+tB,cAAS,GAAxuB;CAA4uB,eAAU,GAAtvB;CAA0vB,eAAU,EAApwB;CAAuwB,YAAO,GAA9wB;CAAkxB,cAAS,GAA3xB;CAA+xB,aAAQ,GAAvyB;CAA2yB,cAAS,EAApzB;CAAuzB,iBAAY,EAAn0B;CAAs0B,eAAU,GAAh1B;CAAo1B,eAAU,CAA91B;CAAg2B,gBAAW,GAA32B;CAA+2B,cAAS,GAAx3B;CAA43B,eAAU,GAAt4B;CAA04B,eAAU,GAAp5B;CAAw5B,eAAU,GAAl6B;CAAs6B,eAAU,GAAh7B;CAAo7B,eAAU,GAA97B;CAAk8B,gBAAW,GAA78B;CAAi9B,cAAS,EAA19B;CAA69B,iBAAY,EAAz+B;CAA4+B,oBAAe,EAA3/B;CAA8/B,aAAQ,EAAtgC;CAAygC,kBAAa,GAAthC;CAA0hC,oBAAe,GAAziC;CAA6iC,kBAAa,EAA1jC;CAA6jC,eAAU,EAAvkC;CAA0kC,oBAAe,CAAzlC;CAA2lC,kBAAa,EAAxmC;CAA2mC,gBAAW,EAAtnC;CAAynC,mBAAc,EAAvoC;CAA0oC,iBAAY,GAAtpC;CAA0pC,oBAAe,EAAzqC;CAA4qC,kBAAa,CAAzrC;CAA2rC,oBAAe,EAA1sC;CAA6sC,mBAAc,EAA3tC;CAA8tC,gBAAW,EAAzuC;CAA4uC,iBAAY,EAAxvC;CAA2vC,iBAAY,GAAvwC;CAA2wC,oBAAe,EAA1xC;CAA6xC,mBAAc,EAA3yC;CAA8yC,gBAAW,CAAzzC;CAA2zC,oBAAe,EAA10C;CAA60C,gBAAW,EAAx1C;CAA21C,uBAAkB,EAA72C;CAAg3C,uBAAkB,GAAl4C;CAAs4C,qBAAgB,CAAt5C;CAAw5C,iBAAY,EAAp6C;CAAu6C,eAAU,EAAj7C;CAAo7C,gBAAW,EAA/7C;CAAk8C,oBAAe,GAAj9C;CAAq9C,cAAS,GAA99C;CAAk+C,cAAS,EAA3+C;CAA8+C,cAAS,EAAv/C;CAA0/C,eAAU,GAApgD;CAAwgD,iBAAY,GAAphD;CAAwhD,cAAS,EAAjiD;CAAoiD,iBAAY,EAAhjD;CAAmjD,iBAAY,EAA/jD;CAAkkD,uBAAkB,EAAplD;CAAulD,kBAAa,EAApmD;CAAumD,gBAAW;CAAlnD,GAAZ;CAAmoDsQ,EAAAA,qBAAqB;CAAGkB,EAAAA,YAAY,GAACnuB,MAAM,CAAC,cAAD,CAAN,GAAuB+tB,WAAW,CAACxsB,KAAD,EAAO,cAAP,CAA/C;CAAsE8sB,EAAAA,aAAa,GAACruB,MAAM,CAAC,eAAD,CAAN,GAAwB+tB,WAAW,CAACxsB,KAAD,EAAO,eAAP,CAAjD;CAAyEmzB,EAAAA,gBAAgB;CAAGpC,EAAAA,WAAW;CAAGkE,EAAAA,sBAAsB;CAAGe,EAAAA,gBAAgB,GAACv3B,MAAM,CAAC,kBAAD,CAAN,GAA2B+tB,WAAW,CAACxsB,KAAD,EAAO,kBAAP,CAAvD;CAAkFo7B,EAAAA,UAAU;;CAAuB,WAAStlB,kBAAT,CAA4Bu0B,OAA5B,EAAoCxhC,WAApC,EAAgDhH,MAAhD,EAAuD;CAAC,QAAI0F,GAAG,GAAC1F,MAAM,GAAC,CAAP,GAASA,MAAT,GAAgByF,eAAe,CAAC+iC,OAAD,CAAf,GAAyB,CAAjD;CAAmD,QAAIC,OAAO,GAAC,IAAI14B,KAAJ,CAAUrK,GAAV,CAAZ;CAA2B,QAAIgjC,eAAe,GAAC3jC,iBAAiB,CAACyjC,OAAD,EAASC,OAAT,EAAiB,CAAjB,EAAmBA,OAAO,CAACzoC,MAA3B,CAArC;CAAwE,QAAGgH,WAAH,EAAeyhC,OAAO,CAACzoC,MAAR,GAAe0oC,eAAf;CAA+B,WAAOD,OAAP;CAAe;;CAAA,WAASvmC,sBAAT,GAAiC;CAACY,IAAAA,iBAAiB,CAAC,eAAD,CAAjB;CAAmC;;CAAA,MAAI4J,aAAa,GAAC;CAAC,yBAAoB2c,kBAArB;CAAwC,wBAAmBE,iBAA3D;CAA6E,+BAA0BC,wBAAvG;CAAgI,6BAAwB0C,sBAAxJ;CAA+K,8BAAyB2I,uBAAxM;CAAgO,0CAAqCoB,mCAArQ;CAAyS,uCAAkCyB,gCAA3U;CAA4W,uCAAkCW,gCAA9Y;CAA+a,8BAAyBoB,uBAAxc;CAAge,8BAAyBG,uBAAzf;CAAihB,gCAA2BS,yBAA5iB;CAAskB,oCAA+BO,6BAArmB;CAAmoB,mCAA8BK,4BAAjqB;CAA8rB,oCAA+BW,6BAA7tB;CAA2vB,6BAAwBQ,sBAAnxB;CAA0yB,4BAAuBE,qBAAj0B;CAAu1B,iBAAYG,UAAn2B;CAA82B,+BAA0BQ,wBAAx4B;CAAi6B,qBAAgB9D,cAAj7B;CAAg8B,gCAA2BmE,yBAA39B;CAAq/B,qBAAgBO,cAArgC;CAAohC,8BAAyBC,uBAA7iC;CAAqkC,yBAAoBC,kBAAzlC;CAA4mC,kBAAaE,WAAznC;CAAqoC,qBAAgBa,cAArpC;CAAoqC,kBAAaY,WAAjrC;CAA6rC,iBAAYqB,UAAzsC;CAAotC,aAAQE,MAA5tC;CAAmuC,sBAAiB0E,eAApvC;CAAowC,8BAAyBI,uBAA7xC;CAAqzC,mBAAciB,YAAn0C;CAAg1C,yBAAoBK,kBAAp2C;CAAu3C,gBAAWG,SAAl4C;CAA44C,qBAAgBC,cAA55C;CAA26C,eAAUE,QAAr7C;CAA87C,eAAUG,QAAx8C;CAAi9C,gBAAWM,SAA59C;CAAs+C,mBAAcC;CAAp/C,GAAlB;CAAohD,EAAQ77B,UAAU;;CAAG,EAAuB5P,MAAM,CAAC,oBAAD,CAAN,GAA6B0O,mBAAmB,CAAC,mBAAD;;CAAsB,MAAIgpB,KAAK,GAAC13B,MAAM,CAAC,OAAD,CAAN,GAAgB0O,mBAAmB,CAAC,MAAD,CAA7C;;CAAsD,MAAIzE,OAAO,GAACjK,MAAM,CAAC,SAAD,CAAN,GAAkB0O,mBAAmB,CAAC,QAAD,CAAjD;;CAA4D,MAAI24B,OAAO,GAACrnC,MAAM,CAAC,SAAD,CAAN,GAAkB0O,mBAAmB,CAAC,QAAD,CAAjD;;CAA4D,MAAIgD,iBAAiB,GAAC1R,MAAM,CAAC,mBAAD,CAAN,GAA4B0O,mBAAmB,CAAC,kBAAD,CAArE;;CAA0F,MAAI+oB,cAAc,GAACz3B,MAAM,CAAC,gBAAD,CAAN,GAAyB0O,mBAAmB,CAAC,eAAD,CAA/D;;CAAiF,EAAgD1O,MAAM,CAAC,6CAAD,CAAN,GAAsD0O,mBAAmB,CAAC,4CAAD;;CAA+C,MAAI8W,aAAa,GAACxlB,MAAM,CAAC,eAAD,CAAN,GAAwB0O,mBAAmB,CAAC,cAAD,CAA7D;;CAA8E,MAAIqJ,4BAA4B,GAAC/X,MAAM,CAAC,8BAAD,CAAN,GAAuC0O,mBAAmB,CAAC,6BAAD,CAA3F;;CAA2H,MAAIq9B,sBAAsB,GAAC/rC,MAAM,CAAC,wBAAD,CAAN,GAAiC,YAAU;CAAC,WAAM,CAAC+rC,sBAAsB,GAAC/rC,MAAM,CAAC,wBAAD,CAAN,GAAiCA,MAAM,CAAC,KAAD,CAAN,CAAc,uBAAd,CAAzD,EAAiG+O,KAAjG,CAAuG,IAAvG,EAA4GC,SAA5G,CAAN;CAA6H,GAApM;;CAAqM,EAA+BhP,MAAM,CAAC,4BAAD,CAAN,GAAqC,YAAU;CAAC,WAAM,CAA4BA,MAAM,CAAC,4BAAD,CAAN,GAAqCA,MAAM,CAAC,KAAD,CAAN,CAAc,2BAAd,CAAjE,EAA6G+O,KAA7G,CAAmH,IAAnH,EAAwHC,SAAxH,CAAN;CAAyI;;CAAC,EAA+BhP,MAAM,CAAC,4BAAD,CAAN,GAAqC,YAAU;CAAC,WAAM,CAA4BA,MAAM,CAAC,4BAAD,CAAN,GAAqCA,MAAM,CAAC,KAAD,CAAN,CAAc,2BAAd,CAAjE,EAA6G+O,KAA7G,CAAmH,IAAnH,EAAwHC,SAAxH,CAAN;CAAyI;;CAAC,MAAIxD,yBAAyB,GAACxL,MAAM,CAAC,2BAAD,CAAN,GAAoC,YAAU;CAAC,WAAM,CAACwL,yBAAyB,GAACxL,MAAM,CAAC,2BAAD,CAAN,GAAoCA,MAAM,CAAC,KAAD,CAAN,CAAc,0BAAd,CAA/D,EAA0G+O,KAA1G,CAAgH,IAAhH,EAAqHC,SAArH,CAAN;CAAsI,GAAnN;;CAAoN,EAAchP,MAAM,CAAC,WAAD,CAAN,GAAoB0O,mBAAmB,CAAC,WAAD;CAAc,EAAiB1O,MAAM,CAAC,cAAD,CAAN,GAAuB0O,mBAAmB,CAAC,cAAD;CAAiB,EAAe1O,MAAM,CAAC,YAAD,CAAN,GAAqB0O,mBAAmB,CAAC,YAAD;CAAe,EAAkB1O,MAAM,CAAC,eAAD,CAAN,GAAwB0O,mBAAmB,CAAC,eAAD;CAAkB,EAAmB1O,MAAM,CAAC,gBAAD,CAAN,GAAyB0O,mBAAmB,CAAC,gBAAD;CAAmB,EAAgB1O,MAAM,CAAC,aAAD,CAAN,GAAsB0O,mBAAmB,CAAC,aAAD;CAAgB,EAAgB1O,MAAM,CAAC,aAAD,CAAN,GAAsB0O,mBAAmB,CAAC,aAAD;CAAgB,EAAiB1O,MAAM,CAAC,cAAD,CAAN,GAAuB0O,mBAAmB,CAAC,cAAD;;CAAiB,EAA0B1O,MAAM,CAAC,uBAAD,CAAN,GAAgC;;CAAOwG,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,OAAD,EAAS,KAAT,CAAzB;CAAyCA,EAAAA,yBAAyB,CAAC,OAAD,EAAS,KAAT,CAAzB;CAAyCA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,YAAD,EAAc,KAAd,CAAzB;CAA8CA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,IAApB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,IAAvB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,IAAjB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,IAArB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,IAA1B,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,IAArB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,IAAnB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,IAAb,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,OAAD,EAAS,KAAT,CAAzB;CAAyCA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,OAAD,EAAS,KAAT,CAAzB;CAAyCA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,YAAD,EAAc,KAAd,CAAzB;CAA8CA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,KAAD,EAAO,KAAP,CAAzB;CAAuCA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,KAAD,EAAO,KAAP,CAAzB;CAAuCA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,YAAD,EAAc,KAAd,CAAzB;CAA8CA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,MAAD,EAAQ,KAAR,CAAzB;CAAwCA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,0BAAD,EAA4B,KAA5B,CAAzB;CAA4DA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,4BAAD,EAA8B,KAA9B,CAAzB;CAA8DA,EAAAA,yBAAyB,CAAC,4BAAD,EAA8B,KAA9B,CAAzB;CAA8DA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,4BAAD,EAA8B,KAA9B,CAAzB;CAA8DA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,wCAAD,EAA0C,KAA1C,CAAzB;CAA0EA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,mCAAD,EAAqC,KAArC,CAAzB;CAAqEA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,wCAAD,EAA0C,KAA1C,CAAzB;CAA0EA,EAAAA,yBAAyB,CAAC,+BAAD,EAAiC,KAAjC,CAAzB;CAAiEA,EAAAA,yBAAyB,CAAC,uCAAD,EAAyC,KAAzC,CAAzB;CAAyEA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,kCAAD,EAAoC,KAApC,CAAzB;CAAoEA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,uCAAD,EAAyC,KAAzC,CAAzB;CAAyEA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,wCAAD,EAA0C,KAA1C,CAAzB;CAA0EA,EAAAA,yBAAyB,CAAC,uCAAD,EAAyC,KAAzC,CAAzB;CAAyEA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,+BAAD,EAAiC,KAAjC,CAAzB;CAAiEA,EAAAA,yBAAyB,CAAC,uCAAD,EAAyC,KAAzC,CAAzB;CAAyEA,EAAAA,yBAAyB,CAAC,4BAAD,EAA8B,KAA9B,CAAzB;CAA8DA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,8BAAD,EAAgC,KAAhC,CAAzB;CAAgEA,EAAAA,yBAAyB,CAAC,mCAAD,EAAqC,KAArC,CAAzB;CAAqEA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,8BAAD,EAAgC,KAAhC,CAAzB;CAAgEA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,YAAD,EAAc,KAAd,CAAzB;CAA8CA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,MAAD,EAAQ,KAAR,CAAzB;CAAwCA,EAAAA,yBAAyB,CAAC,IAAD,EAAM,KAAN,CAAzB;CAAsCA,EAAAA,yBAAyB,CAAC,OAAD,EAAS,KAAT,CAAzB;CAAyCA,EAAAA,yBAAyB,CAAC,KAAD,EAAO,KAAP,CAAzB;CAAuCA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,6BAAD,EAA+B,KAA/B,CAAzB;CAA+DA,EAAAA,yBAAyB,CAAC,IAAD,EAAM,KAAN,CAAzB;CAAsCA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,+BAAD,EAAiC,KAAjC,CAAzB;CAAiEA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,4CAAD,EAA8C,KAA9C,CAAzB;CAA8EA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,IAAD,EAAM,KAAN,CAAzB;CAAsCA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,KAAD,EAAO,KAAP,CAAzB;CAAuCA,EAAAA,yBAAyB,CAAC,SAAD,EAAW,KAAX,CAAzB;CAA2CA,EAAAA,yBAAyB,CAAC,MAAD,EAAQ,KAAR,CAAzB;CAAwCA,EAAAA,yBAAyB,CAAC,KAAD,EAAO,KAAP,CAAzB;CAAuCA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,MAAD,EAAQ,KAAR,CAAzB;CAAwCA,EAAAA,yBAAyB,CAAC,MAAD,EAAQ,KAAR,CAAzB;CAAwCA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,6BAAD,EAA+B,KAA/B,CAAzB;CAA+DA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,+BAAD,EAAiC,KAAjC,CAAzB;CAAiEA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,6BAAD,EAA+B,KAA/B,CAAzB;CAA+DA,EAAAA,yBAAyB,CAAC,0BAAD,EAA4B,KAA5B,CAAzB;CAA4DA,EAAAA,yBAAyB,CAAC,2BAAD,EAA6B,KAA7B,CAAzB;CAA6DA,EAAAA,yBAAyB,CAAC,4BAAD,EAA8B,KAA9B,CAAzB;CAA8DA,EAAAA,yBAAyB,CAAC,gBAAD,EAAkB,KAAlB,CAAzB;CAAkDA,EAAAA,yBAAyB,CAAC,MAAD,EAAQ,KAAR,CAAzB;CAAwCA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,0BAAD,EAA4B,KAA5B,CAAzB;CAA4DA,EAAAA,yBAAyB,CAAC,qCAAD,EAAuC,KAAvC,CAAzB;CAAuEA,EAAAA,yBAAyB,CAAC,wCAAD,EAA0C,KAA1C,CAAzB;CAA0EA,EAAAA,yBAAyB,CAAC,wBAAD,EAA0B,KAA1B,CAAzB;CAA0DA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,8BAAD,EAAgC,KAAhC,CAAzB;CAAgEA,EAAAA,yBAAyB,CAAC,8BAAD,EAAgC,KAAhC,CAAzB;CAAgEA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,gCAAD,EAAkC,KAAlC,CAAzB;CAAkEA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,sBAAD,EAAwB,KAAxB,CAAzB;CAAwDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,aAAD,EAAe,KAAf,CAAzB;CAA+CA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,6BAAD,EAA+B,KAA/B,CAAzB;CAA+DA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,4BAAD,EAA8B,KAA9B,CAAzB;CAA8DA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,QAAD,EAAU,KAAV,CAAzB;CAA0CA,EAAAA,yBAAyB,CAAC,uBAAD,EAAyB,KAAzB,CAAzB;CAAyDA,EAAAA,yBAAyB,CAAC,oBAAD,EAAsB,KAAtB,CAAzB;CAAsDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,YAAD,EAAc,KAAd,CAAzB;CAA8CA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,iBAAD,EAAmB,KAAnB,CAAzB;CAAmDA,EAAAA,yBAAyB,CAAC,mBAAD,EAAqB,KAArB,CAAzB;CAAqDA,EAAAA,yBAAyB,CAAC,OAAD,EAAS,KAAT,CAAzB;CAAyCA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDA,EAAAA,yBAAyB,CAAC,yBAAD,EAA2B,KAA3B,CAAzB;CAA2DA,EAAAA,yBAAyB,CAAC,UAAD,EAAY,KAAZ,CAAzB;CAA4CA,EAAAA,yBAAyB,CAAC,WAAD,EAAa,KAAb,CAAzB;CAA6CA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,YAAD,EAAc,KAAd,CAAzB;CAA8CA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,eAAD,EAAiB,KAAjB,CAAzB;CAAiDA,EAAAA,yBAAyB,CAAC,kBAAD,EAAoB,KAApB,CAAzB;CAAoDA,EAAAA,yBAAyB,CAAC,cAAD,EAAgB,KAAhB,CAAzB;CAAgDA,EAAAA,yBAAyB,CAAC,qBAAD,EAAuB,KAAvB,CAAzB;CAAuDxG,EAAAA,MAAM,CAAC,kBAAD,CAAN,GAA2BsL,gBAA3B;CAA4CtL,EAAAA,MAAM,CAAC,kBAAD,CAAN,GAA2ByL,gBAA3B;CAA4ClF,EAAAA,uBAAuB,CAAC,cAAD,EAAgB,KAAhB,CAAvB;CAA8CA,EAAAA,uBAAuB,CAAC,aAAD,EAAe,KAAf,CAAvB;CAA6C,MAAIylC,SAAJ;;CAAc,WAAStoC,UAAT,CAAoByB,MAApB,EAA2B;CAAC,SAAKwJ,IAAL,GAAU,YAAV;CAAuB,SAAKlO,OAAL,GAAa,kCAAgC0E,MAAhC,GAAuC,GAApD;CAAwD,SAAKA,MAAL,GAAYA,MAAZ;CAAmB;;CAAAoI,EAAAA,qBAAqB,GAAC,SAAS0+B,SAAT,GAAoB;CAAC,QAAG,CAACD,SAAJ,EAAcE,GAAG;CAAG,QAAG,CAACF,SAAJ,EAAcz+B,qBAAqB,GAAC0+B,SAAtB;CAAgC,GAA7G;;CAA8G,WAASE,cAAT,GAAyB;CAACJ,IAAAA,sBAAsB;;CAAGzgC,IAAAA,gBAAgB;CAAG;;CAAA,WAAS4gC,GAAT,CAAarV,IAAb,EAAkB;;CAAuB,QAAGxpB,eAAe,GAAC,CAAnB,EAAqB;CAAC;CAAO;;CAAA8+B,IAAAA,cAAc;CAAGjgC,IAAAA,MAAM;;CAAG,QAAGmB,eAAe,GAAC,CAAnB,EAAqB;CAAC;CAAO;;CAAA,aAAS++B,KAAT,GAAgB;CAAC,UAAGJ,SAAH,EAAa;CAAOA,MAAAA,SAAS,GAAC,IAAV;CAAehsC,MAAAA,MAAM,CAAC,WAAD,CAAN,GAAoB,IAApB;CAAyB,UAAG4G,KAAH,EAAS;CAAO0F,MAAAA,WAAW;CAAG,UAAGtM,MAAM,CAAC,sBAAD,CAAT,EAAkCA,MAAM,CAAC,sBAAD,CAAN;CAAiC8C,MAAAA,MAAM,CAAC,CAAC9C,MAAM,CAAC,OAAD,CAAR,EAAkB,0GAAlB,CAAN;CAAoI2M,MAAAA,OAAO;CAAG;;CAAA,QAAG3M,MAAM,CAAC,WAAD,CAAT,EAAuB;CAACA,MAAAA,MAAM,CAAC,WAAD,CAAN,CAAoB,YAApB;CAAkC+D,MAAAA,UAAU,CAAC,YAAU;CAACA,QAAAA,UAAU,CAAC,YAAU;CAAC/D,UAAAA,MAAM,CAAC,WAAD,CAAN,CAAoB,EAApB;CAAwB,SAApC,EAAqC,CAArC,CAAV;CAAkDosC,QAAAA,KAAK;CAAG,OAAtE,EAAuE,CAAvE,CAAV;CAAoF,KAA9I,MAAkJ;CAACA,MAAAA,KAAK;CAAG;;CAAA3gC,IAAAA,gBAAgB;CAAG;;CAAAzL,EAAAA,MAAM,CAAC,KAAD,CAAN,GAAcksC,GAAd;;CAA0sB,MAAGlsC,MAAM,CAAC,SAAD,CAAT,EAAqB;CAAC,QAAG,OAAOA,MAAM,CAAC,SAAD,CAAb,IAA0B,UAA7B,EAAwCA,MAAM,CAAC,SAAD,CAAN,GAAkB,CAACA,MAAM,CAAC,SAAD,CAAP,CAAlB;;CAAsC,WAAMA,MAAM,CAAC,SAAD,CAAN,CAAkBoD,MAAlB,GAAyB,CAA/B,EAAiC;CAACpD,MAAAA,MAAM,CAAC,SAAD,CAAN,CAAkBkhB,GAAlB;CAA0B;CAAC;;CAAAgrB,EAAAA,GAAG;CAAG1oC,EAAAA,cAAA,GAAexD,MAAf;;;ACAz1+J,oBAAe,CAACqsC,EAAD,EAAKC,kBAAL,KAA4B;CACvC,MAAIC,kBAAkB,GAAG,CACrB,2BADqB,EAErB,4BAFqB,EAGrB,4BAHqB,EAKrB,aALqB,EAMrB,GANqB,EAOrB,0BAPqB,EAQrB,+BARqB,EASrB,GATqB,EAUvB15B,IAVuB,CAUlB,IAVkB,CAAzB;CAYA,MAAI25B,oBAAoB,GAAG,CACvB,wBADuB,EAEvB,kCAFuB,EAGvB,6BAHuB,EAIvB,6BAJuB,EAKvB,6BALuB,EAMvB,2BANuB,EAOvB,GAPuB,EAQvB,gDARuB,EASvB,qDATuB,EAUvB,6CAVuB,EAWvB,YAXuB,EAYvB,IAZuB,EAcvB,mBAduB,EAevB,uDAfuB,EAgBvB,uDAhBuB,EAiBvB,uDAjBuB,EAkBvB,4CAlBuB,EAmBvB,GAnBuB,EAoBzB35B,IApByB,CAoBpB,IApBoB,CAA3B;;CAsBA,MAAIy5B,kBAAJ,EAAwB;CACpBD,IAAAA,EAAE,CAACI,WAAH,CAAeJ,EAAE,CAACK,gBAAlB,EAAoC,CAApC;CACH;;CACD,MAAIC,YAAY,GAAGN,EAAE,CAACO,YAAH,CAAgBP,EAAE,CAACQ,aAAnB,CAAnB;CACAR,EAAAA,EAAE,CAACS,YAAH,CAAgBH,YAAhB,EAA8BJ,kBAA9B;CACAF,EAAAA,EAAE,CAACU,aAAH,CAAiBJ,YAAjB;;CACA,MAAI,CAACN,EAAE,CAACW,kBAAH,CAAsBL,YAAtB,EAAoCN,EAAE,CAACY,cAAvC,CAAL,EAA6D;CACzD9sC,IAAAA,OAAO,CAACC,GAAR,CAAY,sCAAsCisC,EAAE,CAACa,gBAAH,CAAoBP,YAApB,CAAlD;CACH;;CAED,MAAIQ,cAAc,GAAGd,EAAE,CAACO,YAAH,CAAgBP,EAAE,CAACe,eAAnB,CAArB;CACAf,EAAAA,EAAE,CAACS,YAAH,CAAgBK,cAAhB,EAAgCX,oBAAhC;CACAH,EAAAA,EAAE,CAACU,aAAH,CAAiBI,cAAjB;;CACA,MAAI,CAACd,EAAE,CAACW,kBAAH,CAAsBG,cAAtB,EAAsCd,EAAE,CAACY,cAAzC,CAAL,EAA+D;CAC3D9sC,IAAAA,OAAO,CAACC,GAAR,CAAY,wCAAwCisC,EAAE,CAACa,gBAAH,CAAoBC,cAApB,CAApD;CACH;;CAED,MAAIE,OAAO,GAAGhB,EAAE,CAACiB,aAAH,EAAd;CACAjB,EAAAA,EAAE,CAACkB,YAAH,CAAgBF,OAAhB,EAAyBV,YAAzB;CACAN,EAAAA,EAAE,CAACkB,YAAH,CAAgBF,OAAhB,EAAyBF,cAAzB;CACAd,EAAAA,EAAE,CAACmB,WAAH,CAAeH,OAAf;;CACA,MAAI,CAAChB,EAAE,CAACoB,mBAAH,CAAuBJ,OAAvB,EAAgChB,EAAE,CAACqB,WAAnC,CAAL,EAAsD;CAClDvtC,IAAAA,OAAO,CAACC,GAAR,CAAY,gCAAgCisC,EAAE,CAACsB,iBAAH,CAAqBN,OAArB,CAA5C;CACH;;CAEDhB,EAAAA,EAAE,CAACuB,UAAH,CAAcP,OAAd,EA5DuC;;CA+DvC,MAAIQ,eAAe,GAAGxB,EAAE,CAACyB,YAAH,EAAtB;CACAzB,EAAAA,EAAE,CAAC0B,UAAH,CAAc1B,EAAE,CAAC2B,YAAjB,EAA+BH,eAA/B;CACAxB,EAAAA,EAAE,CAAC4B,UAAH,CAAc5B,EAAE,CAAC2B,YAAjB,EAA+B,IAAIjjC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAC,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,CAAC,CAAlB,EAAqB,CAAC,CAAtB,EAAyB,CAAC,CAA1B,CAAjB,CAA/B,EAA+EshC,EAAE,CAAC6B,WAAlF;CAEA,MAAIC,YAAY,GAAG9B,EAAE,CAAC+B,iBAAH,CAAqBf,OAArB,EAA8B,WAA9B,CAAnB;CACAhB,EAAAA,EAAE,CAACgC,uBAAH,CAA2BF,YAA3B;CACA9B,EAAAA,EAAE,CAACiC,mBAAH,CAAuBH,YAAvB,EAAqC,CAArC,EAAwC9B,EAAE,CAACkC,KAA3C,EAAkD,KAAlD,EAAyD,CAAzD,EAA4D,CAA5D;CAEA,MAAIC,gBAAgB,GAAGnC,EAAE,CAACyB,YAAH,EAAvB;CACAzB,EAAAA,EAAE,CAAC0B,UAAH,CAAc1B,EAAE,CAAC2B,YAAjB,EAA+BQ,gBAA/B;CACAnC,EAAAA,EAAE,CAAC4B,UAAH,CAAc5B,EAAE,CAAC2B,YAAjB,EAA+B,IAAIjjC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjB,CAA/B,EAA2EshC,EAAE,CAAC6B,WAA9E;CAEA,MAAIO,aAAa,GAAGpC,EAAE,CAAC+B,iBAAH,CAAqBf,OAArB,EAA8B,YAA9B,CAApB;CACAhB,EAAAA,EAAE,CAACgC,uBAAH,CAA2BI,aAA3B;CACApC,EAAAA,EAAE,CAACiC,mBAAH,CAAuBG,aAAvB,EAAsC,CAAtC,EAAyCpC,EAAE,CAACkC,KAA5C,EAAmD,KAAnD,EAA0D,CAA1D,EAA6D,CAA7D;;CAEA,WAASG,YAAT,CAAsB//B,IAAtB,EAA4BggC,KAA5B,EAAmC;CAC/B,QAAIC,UAAU,GAAGvC,EAAE,CAACwC,aAAH,EAAjB;CACAxC,IAAAA,EAAE,CAACyC,WAAH,CAAezC,EAAE,CAAC0C,UAAlB,EAA8BH,UAA9B;CACAvC,IAAAA,EAAE,CAAC2C,aAAH,CAAiB3C,EAAE,CAAC0C,UAApB,EAAgC1C,EAAE,CAAC4C,kBAAnC,EAAuD5C,EAAE,CAAC6C,MAA1D;CACA7C,IAAAA,EAAE,CAAC2C,aAAH,CAAiB3C,EAAE,CAAC0C,UAApB,EAAgC1C,EAAE,CAAC8C,kBAAnC,EAAuD9C,EAAE,CAAC6C,MAA1D;CACA7C,IAAAA,EAAE,CAAC2C,aAAH,CAAiB3C,EAAE,CAAC0C,UAApB,EAAgC1C,EAAE,CAAC+C,cAAnC,EAAmD/C,EAAE,CAACgD,aAAtD;CACAhD,IAAAA,EAAE,CAAC2C,aAAH,CAAiB3C,EAAE,CAAC0C,UAApB,EAAgC1C,EAAE,CAACiD,cAAnC,EAAmDjD,EAAE,CAACgD,aAAtD;CACAhD,IAAAA,EAAE,CAACyC,WAAH,CAAezC,EAAE,CAAC0C,UAAlB,EAA8B,IAA9B;CACA1C,IAAAA,EAAE,CAACkD,SAAH,CAAalD,EAAE,CAACmD,kBAAH,CAAsBnC,OAAtB,EAA+B1+B,IAA/B,CAAb,EAAmDggC,KAAnD;CACA,WAAOC,UAAP;CACH;;CAED,MAAIa,WAAW,GAAGf,YAAY,CAAC,UAAD,EAAa,CAAb,CAA9B;;CACA,MAAIgB,WAAW,GAAGhB,YAAY,CAAC,UAAD,EAAa,CAAb,CAA9B;;CACA,MAAIiB,WAAW,GAAGjB,YAAY,CAAC,UAAD,EAAa,CAAb,CAA9B;;CAEA,SAAO;CACHkB,IAAAA,MAAM,EAAE,UAAUC,CAAV,EAAaC,CAAb,EAAgB1+B,CAAhB,EAAmB3I,CAAnB,EAAsB2zB,CAAtB,EAAyB;CAC7BiQ,MAAAA,EAAE,CAAC0D,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkBF,CAAlB,EAAqBC,CAArB;CACAzD,MAAAA,EAAE,CAAC2D,aAAH,CAAiB3D,EAAE,CAAC4D,QAApB;CACA5D,MAAAA,EAAE,CAACyC,WAAH,CAAezC,EAAE,CAAC0C,UAAlB,EAA8BU,WAA9B;CACApD,MAAAA,EAAE,CAAC6D,UAAH,CAAc7D,EAAE,CAAC0C,UAAjB,EAA6B,CAA7B,EAAgC1C,EAAE,CAAC8D,SAAnC,EAA8CN,CAA9C,EAAiDC,CAAjD,EAAoD,CAApD,EAAuDzD,EAAE,CAAC8D,SAA1D,EAAqE9D,EAAE,CAAC+D,aAAxE,EAAuFh/B,CAAvF;CACAi7B,MAAAA,EAAE,CAAC2D,aAAH,CAAiB3D,EAAE,CAACgE,QAApB;CACAhE,MAAAA,EAAE,CAACyC,WAAH,CAAezC,EAAE,CAAC0C,UAAlB,EAA8BW,WAA9B;CACArD,MAAAA,EAAE,CAAC6D,UAAH,CAAc7D,EAAE,CAAC0C,UAAjB,EAA6B,CAA7B,EAAgC1C,EAAE,CAAC8D,SAAnC,EAA8CN,CAAC,GAAG,CAAlD,EAAqDC,CAAC,GAAG,CAAzD,EAA4D,CAA5D,EAA+DzD,EAAE,CAAC8D,SAAlE,EAA6E9D,EAAE,CAAC+D,aAAhF,EAA+F3nC,CAA/F;CACA4jC,MAAAA,EAAE,CAAC2D,aAAH,CAAiB3D,EAAE,CAACiE,QAApB;CACAjE,MAAAA,EAAE,CAACyC,WAAH,CAAezC,EAAE,CAAC0C,UAAlB,EAA8BY,WAA9B;CACAtD,MAAAA,EAAE,CAAC6D,UAAH,CAAc7D,EAAE,CAAC0C,UAAjB,EAA6B,CAA7B,EAAgC1C,EAAE,CAAC8D,SAAnC,EAA8CN,CAAC,GAAG,CAAlD,EAAqDC,CAAC,GAAG,CAAzD,EAA4D,CAA5D,EAA+DzD,EAAE,CAAC8D,SAAlE,EAA6E9D,EAAE,CAAC+D,aAAhF,EAA+FhU,CAA/F;CACAiQ,MAAAA,EAAE,CAACkE,UAAH,CAAclE,EAAE,CAACmE,cAAjB,EAAiC,CAAjC,EAAoC,CAApC;CACH,KAbE;CAcHC,IAAAA,OAAO,EAAE,YAAY;CACjB,UAAI;CACApE,QAAAA,EAAE,CAACqE,aAAH,CAAiBrD,OAAjB;CAEAhB,QAAAA,EAAE,CAACsE,YAAH,CAAgB9C,eAAhB;CACAxB,QAAAA,EAAE,CAACsE,YAAH,CAAgBnC,gBAAhB;CAEAnC,QAAAA,EAAE,CAACuE,aAAH,CAAiBnB,WAAjB;CACApD,QAAAA,EAAE,CAACuE,aAAH,CAAiBlB,WAAjB;CACArD,QAAAA,EAAE,CAACuE,aAAH,CAAiBjB,WAAjB;CACH,OATD,CASE,OAAOvhC,CAAP,EAAU;CAEX;CAEJ;CA5BE,GAAP;CA8BH,CA7HD;;CCAA;CACO,MAAMyiC,oBAAoB,GAAG;CAChCC,EAAAA,SAAS,EAAE,CADqB;CAEhCzhC,EAAAA,KAAK,EAAE,CAFyB;CAGhC0hC,EAAAA,MAAM,EAAE;CAHwB,CAA7B;CAMA,MAAMC,UAAU,GAAG;CACtBC,EAAAA,GAAG,EAAE,KADiB;CAEtBC,EAAAA,GAAG,EAAE;CAFiB,CAAnB;CAKA,MAAMC,WAAW,GAAG;CACvBC,EAAAA,GAAG,EAAE,KADkB;CAEvBC,EAAAA,IAAI,EAAE;CAFiB,CAApB;;CAWA,MAAMC,sBAAsB,GAAG;CAClCC,EAAAA,WAAW,EAAE,IADqB;CACf;CACnBC,EAAAA,gBAAgB,EAAE,IAFgB;CAEX;CACvBC,EAAAA,QAAQ,EAAE,IAHwB;CAIlCC,EAAAA,YAAY,EAAE,KAJoB;CAIb;CACrBC,EAAAA,KAAK,EAAE,KAL2B;CAMlC7I,EAAAA,KAAK,EAAE,KAN2B;CAOlC8I,EAAAA,MAAM,EAAE,KAP0B;CAOnB;CACfC,EAAAA,cAAc,EAAE,EARkB;CAQd;CACpBC,EAAAA,YAAY,EAAE,CAToB;CAShB;CAClBC,EAAAA,OAAO,EAAE,EAVyB;CAUrB;CACbC,EAAAA,oBAAoB,EAAE,IAXY;CAWN;CAC5BC,EAAAA,kBAAkB,EAAE,IAZc;CAYT;CACzBC,EAAAA,yBAAyB,EAAE,CAbO;CAaJ;CAC9BC,EAAAA,uBAAuB,EAAE,CAdS;CAcN;CAC5BC,EAAAA,yBAAyB,EAAE,KAfO;CAeA;CAClCC,EAAAA,aAAa,EAAE,KAhBmB;CAgBZ;CACtBC,EAAAA,YAAY,EAAE,KAjBoB;CAiBb;CACrBC,EAAAA,SAAS,EAAE,KAlBuB;CAkBhB;CAClBC,EAAAA,QAAQ,EAAE,IAnBwB;CAmBlB;CAChBC,EAAAA,QAAQ,EAAE,IApBwB;CAoBlB;CAChBC,EAAAA,WAAW,EAAE;CACTC,IAAAA,UAAU,EAAE,KADH;CAETC,IAAAA,UAAU,EAAE,KAFH;CAGTC,IAAAA,IAAI,EAAE,KAHG;CAITC,IAAAA,KAAK,EAAE,KAJE;CAKTngB,IAAAA,MAAM,EAAE;CALC,GArBqB;CA4BlCogB,EAAAA,eAAe,EAAE,KA5BiB;CA4BV;CACxBC,EAAAA,UAAU,EAAE,KA7BsB;CA8BlCC,EAAAA,WAAW,EAAE,EA9BqB;CA8BjB;CACjBC,EAAAA,UAAU,EAAE,EA/BsB;CAgClCC,EAAAA,OAAO,EAAE,YAhCyB;CAiClCxuC,EAAAA,GAAG,EAAE,EAjC6B;CAiC1B;CACRyuC,EAAAA,MAAM,EAAE,CAlC0B;CAkCvB;CACX;CACAC,EAAAA,gBAAgB,EAAE,IApCgB;CAoCV;CACxBC,EAAAA,eAAe,EAAE,KArCiB;CAqCV;CACxBC,EAAAA,QAAQ,EAAE1C,oBAAoB,CAACxhC,KAtCG;CAuClCmkC,EAAAA,SAAS,EAAExC,UAAU,CAACC,GAvCY;CAuCP;CAC3BwC,EAAAA,MAAM,EAAE,KAxC0B;CAwCnB;CACfC,EAAAA,iBAAiB,EAAE,IAzCe;CAyCV;CACxBC,EAAAA,MAAM,EAAE,KA1C0B;CA0CnB;CACfC,EAAAA,YAAY,EAAE,KA3CoB;CA2Cb;CACrBC,EAAAA,QAAQ,EAAE,IA5CwB;CA4ClB;CAChBC,EAAAA,qBAAqB,EAAE,IA7CW;CA6CL;CAC7BxH,EAAAA,kBAAkB,EAAE,KA9Cc;CA8CR;CAC1ByH,EAAAA,wBAAwB,EAAE,KA/CQ;CA+CF;CAChCC,EAAAA,UAAU,EAAE7C,WAAW,CAACE,IAhDU;CAiDlC4C,EAAAA,gBAAgB,EAAE,KAjDgB;;CAAA,CAA/B;CAqDA,MAAMC,eAAe,GAAG;CAC3B1nC,EAAAA,IAAI,EAAE,MADqB;CAE3B2nC,EAAAA,SAAS,EAAE,WAFgB;CAG3BvE,EAAAA,MAAM,EAAE,QAHmB;CAI3BwE,EAAAA,SAAS,EAAE,WAJgB;CAK3BC,EAAAA,SAAS,EAAE,WALgB;CAM3BC,EAAAA,IAAI,EAAE,MANqB;CAO3BhtC,EAAAA,MAAM,EAAE,QAPmB;CAQ3BitC,EAAAA,SAAS,EAAE,WARgB;CAS3BC,EAAAA,SAAS,EAAE,WATgB;CAU3BC,EAAAA,SAAS,EAAE;CAVgB,CAAxB;CAkBA,MAAMC,UAAU,GAAG;CACtB5B,EAAAA,KAAK,EAAE,CADe;CAEtB6B,EAAAA,KAAK,EAAE;CAFe,CAAnB;CAUA,MAAMC,gBAAgB,GAAG;CAC5BpoC,EAAAA,IAAI,EAAE,MADsB;CAE5BlF,EAAAA,MAAM,EAAE,QAFoB;CAG5ButC,EAAAA,WAAW,EAAE,aAHe;CAI5BC,EAAAA,WAAW,EAAE,aAJe;CAK5B9+B,EAAAA,KAAK,EAAE,OALqB;CAM5B++B,EAAAA,YAAY,EAAE;CANc,CAAzB;CAuKA,MAAMC,kBAAkB,GAAG;CAC9Bv5B,EAAAA,GAAG,EAAE,KADyB;CAE9Bw5B,EAAAA,KAAK,EAAE;CAFuB,CAA3B;;;CC/QP;CACA;CACA;CACA;CACA;CACA,CAAC,YAAY;AAEb;CACA,CAAC,IAAI,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;CAC/G,CAAC,IAAI,UAAU,GAAoC,MAAM,CAAC,OAAO,CAAC;AAClE;CACA,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY;CACvB,EAAE,IAAI,GAAG,CAAC;AACV;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG;CACH,IAAI,mBAAmB;CACvB,IAAI,gBAAgB;CACpB,IAAI,mBAAmB;CACvB,IAAI,mBAAmB;CACvB,IAAI,kBAAkB;CACtB,IAAI,iBAAiB;CACrB,IAAI;CACJ;CACA,GAAG;CACH,IAAI,yBAAyB;CAC7B,IAAI,sBAAsB;CAC1B,IAAI,yBAAyB;CAC7B,IAAI,yBAAyB;CAC7B,IAAI,wBAAwB;CAC5B,IAAI,uBAAuB;AAC3B;CACA,IAAI;CACJ;CACA,GAAG;CACH,IAAI,yBAAyB;CAC7B,IAAI,wBAAwB;CAC5B,IAAI,gCAAgC;CACpC,IAAI,wBAAwB;CAC5B,IAAI,wBAAwB;CAC5B,IAAI,uBAAuB;AAC3B;CACA,IAAI;CACJ,GAAG;CACH,IAAI,sBAAsB;CAC1B,IAAI,qBAAqB;CACzB,IAAI,sBAAsB;CAC1B,IAAI,sBAAsB;CAC1B,IAAI,qBAAqB;CACzB,IAAI,oBAAoB;CACxB,IAAI;CACJ,GAAG;CACH,IAAI,qBAAqB;CACzB,IAAI,kBAAkB;CACtB,IAAI,qBAAqB;CACzB,IAAI,qBAAqB;CACzB,IAAI,oBAAoB;CACxB,IAAI,mBAAmB;CACvB,IAAI;CACJ,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;CACvB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf;CACA,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACrB,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClB,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;CAClC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACrC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/B,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,IAAI;CACJ,GAAG;AACH;CACA,EAAE,OAAO,KAAK,CAAC;CACf,EAAE,GAAG,CAAC;AACN;CACA,CAAC,IAAI,YAAY,GAAG;CACpB,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAgB;CAC7B,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe;CAC3B,EAAE,CAAC;AACH;CACA,CAAC,IAAI,UAAU,GAAG;CAClB,EAAE,OAAO,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE;CACvC,GAAG,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;CACjD,IAAI,IAAI,mBAAmB,GAAG,YAAY;CAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;CAC7C,KAAK,OAAO,EAAE,CAAC;CACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB;CACA,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC3C;CACA,IAAI,OAAO,GAAG,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC;AAClD;CACA,IAAI,IAAI,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/D;CACA,IAAI,IAAI,aAAa,YAAY,OAAO,EAAE;CAC1C,KAAK,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3D,KAAK;CACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CACjB,GAAG;CACH,EAAE,IAAI,EAAE,YAAY;CACpB,GAAG,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;CACjD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAC5B,KAAK,OAAO,EAAE,CAAC;CACf,KAAK,OAAO;CACZ,KAAK;AACL;CACA,IAAI,IAAI,gBAAgB,GAAG,YAAY;CACvC,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;CAC1C,KAAK,OAAO,EAAE,CAAC;CACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB;CACA,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACxC;CACA,IAAI,IAAI,aAAa,GAAG,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;AACtD;CACA,IAAI,IAAI,aAAa,YAAY,OAAO,EAAE;CAC1C,KAAK,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACxD,KAAK;CACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CACjB,GAAG;CACH,EAAE,MAAM,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE;CACtC,GAAG,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC3E,GAAG;CACH,EAAE,QAAQ,EAAE,UAAU,QAAQ,EAAE;CAChC,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAC/B,GAAG;CACH,EAAE,OAAO,EAAE,UAAU,QAAQ,EAAE;CAC/B,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;CAC9B,GAAG;CACH,EAAE,EAAE,EAAE,UAAU,KAAK,EAAE,QAAQ,EAAE;CACjC,GAAG,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;CACvC,GAAG,IAAI,SAAS,EAAE;CAClB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC1D,IAAI;CACJ,GAAG;CACH,EAAE,GAAG,EAAE,UAAU,KAAK,EAAE,QAAQ,EAAE;CAClC,GAAG,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;CACvC,GAAG,IAAI,SAAS,EAAE;CAClB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC7D,IAAI;CACJ,GAAG;CACH,EAAE,GAAG,EAAE,EAAE;CACT,EAAE,CAAC;AACH;CACA,CAAC,IAAI,CAAC,EAAE,EAAE;CACV,EAAE,IAAI,UAAU,EAAE;CAClB,GAAG,cAAc,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACvC,GAAG,MAAM;CACT,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CAC1C,GAAG;AACH;CACA,EAAE,OAAO;CACT,EAAE;AACF;CACA,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE;CACrC,EAAE,YAAY,EAAE;CAChB,GAAG,GAAG,EAAE,YAAY;CACpB,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;CACnD,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,EAAE;CACX,GAAG,UAAU,EAAE,IAAI;CACnB,GAAG,GAAG,EAAE,YAAY;CACpB,IAAI,OAAO,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;CAC1C,IAAI;CACJ,GAAG;CACH,EAAE,SAAS,EAAE;CACb,GAAG,UAAU,EAAE,IAAI;CACnB,GAAG,GAAG,EAAE,YAAY;CACpB;CACA,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;CACnD,IAAI;CACJ,GAAG;CACH,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,IAAI,UAAU,EAAE;CACjB,EAAE,cAAc,GAAG,UAAU,CAAC;CAC9B,EAAE,MAAM;CACR,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;CACjC,EAAE;CACF,CAAC,GAAG;;;;CCnFyB,CAAC,MAAM;CAChC,MAAI;CACA,QAAI,OAAOvuC,WAAP,KAAuB,QAAvB,IACG,OAAOA,WAAW,CAAC6J,WAAnB,KAAmC,UAD1C,EACsD;CAClD,YAAM/M,MAAM,GAAG,IAAIkD,WAAW,CAAC1G,MAAhB,CAAuB6C,UAAU,CAACqyC,EAAX,CAAc,GAAd,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,CAAvB,CAAf;CACA,UAAI1xC,MAAM,YAAYkD,WAAW,CAAC1G,MAAlC,EACI,OAAO,IAAI0G,WAAW,CAACyuC,QAAhB,CAAyB3xC,MAAzB,aAA4CkD,WAAW,CAACyuC,QAA/D;CACP;CACJ,GAPD,CAOE,OAAO/mC,CAAP,EAAU;;CAEZ,SAAO,KAAP;CACH,CAX4B;CAqLtB,SAASgnC,2BAAT,CAAqCC,IAArC,EAA2C;CAC9C,MAAIC,UAAU,GAAGD,IAAI,CAAC9tC,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAjB;CACA,MAAIguC,WAAW,GAAG,OAAlB;;CACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;CACxB,QAAI1F,CAAC,GAAGwF,UAAU,CAACE,CAAD,CAAV,CAAc1tC,QAAd,CAAuB,EAAvB,CAAR;;CACA,QAAIgoC,CAAC,CAAC1sC,MAAF,GAAW,CAAf,EAAkB;CACd0sC,MAAAA,CAAC,GAAG,MAAMA,CAAV;CACH;;CACDyF,IAAAA,WAAW,IAAIzF,CAAf;CACH;;CAED,SAAO;CACH2F,IAAAA,KAAK,EAAEF,WADJ;CAEHG,IAAAA,WAAW,EAAEL;CAFV,GAAP;CAIH;;CCnSD,IAAI,CAAC9+B,IAAI,CAACC,GAAV,EAAeD,IAAI,CAACC,GAAL,GAAW,YAAY;CAClC,SAAO,IAAID,IAAJ,GAAWiV,OAAX,EAAP;CACH,CAFc;;AAIfxrB,QAAM,CAAC2M,OAAP,GAAiB,YAAY;CACzB,MAAI/J,MAAM,GAAG,EAAb;CACA,MAAI+yC,eAAe,GAAG,EAAtB;CACA,MAAIC,eAAe,GAAG,EAAtB;;CACA,MAAI,kBAAkB1xC,IAAtB,EAA4B;CACxB0xC,IAAAA,eAAe,GAAG;CACdC,MAAAA,OAAO,EAAE,KADK;CAEdC,MAAAA,UAAU,EAAE,KAFE;CAGdC,MAAAA,eAAe,EAAE,IAHH;CAIdC,MAAAA,kBAAkB,EAAE,IAJN;CAKd7C,MAAAA,OAAO,EAAE,IAAI8C,YAAJ,CAAiB;CACtBzgC,QAAAA,MAAM,EAAE,UAAU0gC,UAAV,EAAsB;CAC1B,cAAI,CAACN,eAAe,CAACE,UAArB,EAAiC;CAC7B3C,YAAAA,SAAO,CAACgD,GAAR,CAAYrN,KAAZ,IAAqB3oC,OAAO,CAACC,GAAR,CAAY,sDAAZ,CAArB;CACAG,YAAAA,WAAW,CAAC;CACRC,cAAAA,GAAG,EAAE0zC,eAAe,CAACC,SADb;CAERtE,cAAAA,CAAC,EAAEqG,UAAU,CAACE,UAFN;CAGRtG,cAAAA,CAAC,EAAEoG,UAAU,CAACG;CAHN,aAAD,CAAX;CAKAT,YAAAA,eAAe,CAACE,UAAhB,GAA6B,IAA7B;CACAF,YAAAA,eAAe,CAACG,eAAhB,GAAkC,IAAIO,eAAJ,CAAoBJ,UAAU,CAACE,UAA/B,EAA2CF,UAAU,CAACG,WAAtD,CAAlC;CACAT,YAAAA,eAAe,CAACI,kBAAhB,GAAqCJ,eAAe,CAACG,eAAhB,CAAgCQ,UAAhC,CAA2C,IAA3C,CAArC;CACH;;CAEDX,UAAAA,eAAe,CAACI,kBAAhB,CAAmCQ,SAAnC,CAA6CN,UAA7C,EAAyD,CAAzD,EAA4D,CAA5D,EAA+DA,UAAU,CAACE,UAA1E,EAAsFF,UAAU,CAACG,WAAjG;CACA,cAAII,YAAY,GAAGb,eAAe,CAACG,eAAhB,CAAgCW,qBAAhC,EAAnB;CACAn2C,UAAAA,WAAW,CAAC;CACRC,YAAAA,GAAG,EAAE0zC,eAAe,CAACtE,MADb;CAERhtC,YAAAA,MAAM,EAAE6zC,YAFA;CAGRE,YAAAA,KAAK,EAAExD,SAAO,CAACwD,KAHP;CAIRC,YAAAA,EAAE,EAAE;CAJI,WAAD,EAKR,CAACH,YAAD,CALQ,CAAX;CAOA1yC,UAAAA,UAAU,CAAC,YAAY;CACnB,gBAAImyC,UAAU,CAAClgC,KAAf,EAAsB;CAClBkgC,cAAAA,UAAU,CAAClgC,KAAX;CACH,aAFD,MAEO;CACHkgC,cAAAA,UAAU,CAACzF,OAAX;CACH;CACJ,WANS,EAMP,GANO,CAAV;CAQH,SA/BqB;CAgCtBxsC,QAAAA,KAAK,EAAE,UAAUA,KAAV,EAAiB;CACpB9D,UAAAA,OAAO,CAAC8D,KAAR,CAAcA,KAAd;CACH;CAlCqB,OAAjB,CALK;CAyCdqD,MAAAA,MAAM,EAAE,UAAUuvC,OAAV,EAAmBD,EAAnB,EAAuB;CAC3B,cAAME,QAAQ,GAAGD,OAAO,CAAC,CAAD,CAAP,IAAc,CAAd,KAAoB,CAArC;;CACA,YAAI,CAACjB,eAAe,CAACC,OAArB,EAA8B;CAC1B,cAAIiB,QAAQ,IAAID,OAAO,CAAC,CAAD,CAAP,KAAe,CAA/B,EAAkC;CAC9B,kBAAME,UAAU,GAAIF,OAAO,CAAC,CAAD,CAAP,GAAa,IAAjC;CACA1D,YAAAA,SAAO,CAAC6D,aAAR,CAAsBD,UAAtB;CACA,kBAAME,MAAM,GAAG7B,2BAA2B,CAACyB,OAAO,CAACtzC,KAAR,CAAc,CAAd,CAAD,CAA1C;CACAqyC,YAAAA,eAAe,CAACzC,OAAhB,CAAwB+D,SAAxB,CAAkCD,MAAlC;CACArB,YAAAA,eAAe,CAACC,OAAhB,GAA0B,IAA1B;CACH;CACJ,SARD,MAQO;CACH,gBAAMsB,KAAK,GAAG,IAAIC,iBAAJ,CAAsB;CAChCj0C,YAAAA,IAAI,EAAE0zC,OAAO,CAACtzC,KAAR,CAAc,CAAd,CAD0B;CAEhC+S,YAAAA,SAAS,EAAEsgC,EAFqB;CAGhCl1B,YAAAA,IAAI,EAAEo1B,QAAQ,GAAG9B,kBAAkB,CAACv5B,GAAtB,GAA4Bu5B,kBAAkB,CAACC;CAH7B,WAAtB,CAAd;CAKAW,UAAAA,eAAe,CAACzC,OAAhB,CAAwB7rC,MAAxB,CAA+B6vC,KAA/B;CACH;CACJ,OA3Da;;CA4DdE,MAAAA,KAAK,GAAG;CACJzB,QAAAA,eAAe,CAACC,OAAhB,GAA0B,KAA1B;CACAD,QAAAA,eAAe,CAACE,UAAhB,GAA6B,KAA7B;CACAF,QAAAA,eAAe,CAACG,eAAhB,GAAkC,IAAlC;CACAH,QAAAA,eAAe,CAACI,kBAAhB,GAAqC,IAArC;CACH;;CAjEa,KAAlB;CAmEH;;CAED,MAAI7C,SAAO,GAAG;CACVgD,IAAAA,GAAG,EAAE;CACDrN,MAAAA,KAAK,EAAEwI,sBAAsB,CAACxI,KAD7B;CAED8K,MAAAA,YAAY,EAAEtC,sBAAsB,CAACsC,YAFpC;CAGDH,MAAAA,MAAM,EAAEnC,sBAAsB,CAACmC,MAH9B;CAIDlC,MAAAA,WAAW,EAAED,sBAAsB,CAACC,WAJnC;CAKDjF,MAAAA,kBAAkB,EAAEgF,sBAAsB,CAAChF,kBAL1C;CAMDkF,MAAAA,gBAAgB,EAAEF,sBAAsB,CAACE;CANxC,KADK;CASVoC,IAAAA,YAAY,EAAE,YAAY;CACtB,aAAOT,SAAO,CAACgD,GAAR,CAAYvC,YAAZ,IAA4B,OAAO0C,eAAP,IAA0B,WAA7D;CACH,KAXS;CAYVgB,IAAAA,eAAe,EAAE,UAAUC,QAAV,EAAoBC,UAApB,EAAgC;CAC7Cj3C,MAAAA,WAAW,CAAC;CAACC,QAAAA,GAAG,EAAE0zC,eAAe,CAACG,SAAtB;CAAiCoD,QAAAA,UAAU,EAAED,UAA7C;CAAyDD,QAAAA,QAAQ,EAAEA;CAAnE,OAAD,CAAX;CACA,UAAIG,WAAW,GAAG,EAAlB;CACA,UAAIC,MAAM,GAAG,CAAb;;CACA,WAAKC,eAAL,GAAuB,UAAUz0C,IAAV,EAAgB2F,GAAhB,EAAqB8tC,EAArB,EAAyB;CAC5C,YAAIiB,UAAU,GAAG/uC,GAAjB;CACA,YAAIgvC,MAAM,GAAG,EAAb;CACA,YAAItjC,KAAK,GAAG,CAAZ;;CACA,aAAK,IAAIujC,OAAO,GAAG,CAAnB,EAAsBA,OAAO,GAAG,CAAhC,EAAmCA,OAAO,EAA1C,EAA8C;CAC1C,cAAIzgB,EAAE,GAAGt3B,OAAM,CAACqK,OAAP,CAAe,CAAClH,IAAI,IAAI,CAAT,IAAc40C,OAA7B,KAAyC,CAAlD;CACAD,UAAAA,MAAM,CAACC,OAAD,CAAN,GAAkB/3C,OAAM,CAACsK,OAAP,CAAe/C,QAAf,CAAwB+vB,EAAxB,EAA4BA,EAAE,GAAGugB,UAAjC,CAAlB;CACH;;CACD,YAAIF,MAAJ,EAAY;CACR7uC,UAAAA,GAAG,GAAG,OAAO6uC,MAAb;;CACA,cAAIE,UAAU,IAAI/uC,GAAlB,EAAuB;CACnB4uC,YAAAA,WAAW,CAAC,CAAD,CAAX,GAAiB3sC,YAAY,CAACmqC,EAAb,CAAgB,GAAGS,eAAe,CAAC,CAAD,CAAlC,EAAuC,GAAGmC,MAAM,CAAC,CAAD,CAAN,CAAUvwC,QAAV,CAAmB,CAAnB,EAAsBuB,GAAtB,CAA1C,CAAjB;;CACA,gBAAIyuC,QAAQ,IAAI,CAAhB,EAAmB;CACfG,cAAAA,WAAW,CAAC,CAAD,CAAX,GAAiB3sC,YAAY,CAACmqC,EAAb,CAAgB,GAAGS,eAAe,CAAC,CAAD,CAAlC,EAAuC,GAAGmC,MAAM,CAAC,CAAD,CAAN,CAAUvwC,QAAV,CAAmB,CAAnB,EAAsBuB,GAAtB,CAA1C,CAAjB;CACH;;CACDvI,YAAAA,WAAW,CAAC;CACRC,cAAAA,GAAG,EAAE0zC,eAAe,CAACE,SADb;CAERxxC,cAAAA,MAAM,EAAE80C,WAFA;CAGRd,cAAAA;CAHQ,aAAD,EAIRc,WAAW,CAAC1f,GAAZ,CAAgB7mB,CAAC,IAAIA,CAAC,CAACvO,MAAvB,CAJQ,CAAX;CAKA4R,YAAAA,KAAK,GAAG1L,GAAR;CACA+uC,YAAAA,UAAU,IAAI/uC,GAAd;CACH,WAZD,MAYO;CACH6uC,YAAAA,MAAM,IAAIE,UAAV;CACAlC,YAAAA,eAAe,CAAC,CAAD,CAAf,GAAqB5qC,YAAY,CAACmqC,EAAb,CAAgB,GAAGS,eAAe,CAAC,CAAD,CAAlC,EAAuC,GAAGmC,MAAM,CAAC,CAAD,CAAhD,CAArB;;CACA,gBAAIP,QAAQ,IAAI,CAAhB,EAAmB;CACf5B,cAAAA,eAAe,CAAC,CAAD,CAAf,GAAqB5qC,YAAY,CAACmqC,EAAb,CAAgB,GAAGS,eAAe,CAAC,CAAD,CAAlC,EAAuC,GAAGmC,MAAM,CAAC,CAAD,CAAhD,CAArB;CACH;;CACD;CACH;CACJ;;CACD,aAAKH,MAAM,GAAGE,UAAd,EAA0BF,MAAM,IAAI,IAApC,EAA0CA,MAAM,IAAI,IAApD,EAA0D;CACtDD,UAAAA,WAAW,CAAC,CAAD,CAAX,GAAiBI,MAAM,CAAC,CAAD,CAAN,CAAUv0C,KAAV,CAAgBiR,KAAhB,EAAuBA,KAAK,IAAI,IAAhC,CAAjB;;CACA,cAAI+iC,QAAQ,IAAI,CAAhB,EAAmB;CACfG,YAAAA,WAAW,CAAC,CAAD,CAAX,GAAiBI,MAAM,CAAC,CAAD,CAAN,CAAUv0C,KAAV,CAAgBiR,KAAK,GAAG,IAAxB,EAA8BA,KAA9B,CAAjB;CACH;;CACDjU,UAAAA,WAAW,CAAC;CACRC,YAAAA,GAAG,EAAE0zC,eAAe,CAACE,SADb;CAERxxC,YAAAA,MAAM,EAAE80C,WAFA;CAGRd,YAAAA;CAHQ,WAAD,EAIRc,WAAW,CAAC1f,GAAZ,CAAgB7mB,CAAC,IAAIA,CAAC,CAACvO,MAAvB,CAJQ,CAAX;CAKH;;CACD,YAAI+0C,MAAJ,EAAY;CACRhC,UAAAA,eAAe,CAAC,CAAD,CAAf,GAAqBmC,MAAM,CAAC,CAAD,CAAN,CAAUv0C,KAAV,CAAgBiR,KAAhB,CAArB;;CACA,cAAI+iC,QAAQ,IAAI,CAAhB,EAAmB;CACf5B,YAAAA,eAAe,CAAC,CAAD,CAAf,GAAqBmC,MAAM,CAAC,CAAD,CAAN,CAAUv0C,KAAV,CAAgBiR,KAAhB,CAArB;CACH;CACJ;CACJ,OAhDD;CAiDH,KAjES;CAkEVwiC,IAAAA,aAAa,EAAE,UAAU7xB,IAAV,EAAgB;CAC3B5kB,MAAAA,WAAW,CAAC;CAACC,QAAAA,GAAG,EAAE0zC,eAAe,CAACM,SAAtB;CAAiCrvB,QAAAA;CAAjC,OAAD,CAAX;CACH,KApES;CAqEV6yB,IAAAA,aAAa,EAAE,UAAU7yB,IAAV,EAAgB;CAC3B5kB,MAAAA,WAAW,CAAC;CAACC,QAAAA,GAAG,EAAE0zC,eAAe,CAACK,SAAtB;CAAiCpvB,QAAAA;CAAjC,OAAD,CAAX;CACH,KAvES;CAwEV8yB,IAAAA,YAAY,EAAE,UAAUpI,CAAV,EAAaC,CAAb,EAAgB;CAC1BvvC,MAAAA,WAAW,CAAC;CAACC,QAAAA,GAAG,EAAE0zC,eAAe,CAACC,SAAtB;CAAiCtE,QAAAA,CAAC,EAAEA,CAApC;CAAuCC,QAAAA,CAAC,EAAEA;CAA1C,OAAD,CAAX;CACA,UAAI9lC,IAAI,GAAG6lC,CAAC,GAAGC,CAAf;CACA,UAAIoI,KAAK,GAAGluC,IAAI,IAAI,CAApB;;CACA,UAAImpC,SAAO,CAACS,YAAR,EAAJ,EAA4B;CACxB,aAAKmC,eAAL,GAAuB,IAAIO,eAAJ,CAAoBzG,CAApB,EAAuBC,CAAvB,CAAvB;CACA,aAAKqI,iBAAL,GAAyB,KAAKpC,eAAL,CAAqBQ,UAArB,CAAgC,OAAhC,CAAzB;CACA,aAAK6B,QAAL,GAAgBC,WAAW,CAAC,KAAKF,iBAAN,EAAyBhF,SAAO,CAACgD,GAAR,CAAY7J,kBAArC,CAA3B;;CACA,aAAKgM,IAAL,GAAY,UAAU1B,EAAV,EAAcxlC,CAAd,EAAiB3I,CAAjB,EAAoB2zB,CAApB,EAAuB;CAC/B,gBAAMmc,KAAK,GAAGv4C,OAAM,CAACkI,MAAP,CAAcX,QAAd,CAAuB6J,CAAvB,EAA0BA,CAAC,GAAGpH,IAA9B,CAAd;CACA,gBAAMwuC,KAAK,GAAGx4C,OAAM,CAACkI,MAAP,CAAcX,QAAd,CAAuBkB,CAAvB,EAA0BA,CAAC,GAAGyvC,KAA9B,CAAd;CACA,gBAAMO,KAAK,GAAGz4C,OAAM,CAACkI,MAAP,CAAcX,QAAd,CAAuB60B,CAAvB,EAA0BA,CAAC,GAAI8b,KAA/B,CAAd,CAH+B;CAK/B;CACA;CACA;;CAEA,eAAKE,QAAL,CAAcxI,MAAd,CAAqBC,CAArB,EAAwBC,CAAxB,EAA2ByI,KAA3B,EAAkCC,KAAlC,EAAyCC,KAAzC;CACA,cAAIhC,YAAY,GAAG,KAAKV,eAAL,CAAqBW,qBAArB,EAAnB;CACAn2C,UAAAA,WAAW,CAAC;CACRC,YAAAA,GAAG,EAAE0zC,eAAe,CAACtE,MADb;CAERhtC,YAAAA,MAAM,EAAE6zC,YAFA;CAGRE,YAAAA,KAAK,EAAE,KAAKA,KAHJ;CAIRC,YAAAA;CAJQ,WAAD,EAKR,CAACH,YAAD,CALQ,CAAX;CAMH,SAjBD;CAkBH,OAtBD,MAsBO;CACH,aAAK6B,IAAL,GAAY,UAAU1B,EAAV,EAAcxlC,CAAd,EAAiB3I,CAAjB,EAAoB2zB,CAApB,EAAuB;CAC/B,gBAAMmc,KAAK,GAAG11C,UAAU,CAACuR,IAAX,CAAgBpU,OAAM,CAACkI,MAAP,CAAcX,QAAd,CAAuB6J,CAAvB,EAA0BA,CAAC,GAAGpH,IAA9B,CAAhB,CAAd;CACA,gBAAMwuC,KAAK,GAAG31C,UAAU,CAACuR,IAAX,CAAgBpU,OAAM,CAACkI,MAAP,CAAcX,QAAd,CAAuBkB,CAAvB,EAA0BA,CAAC,GAAGyvC,KAA9B,CAAhB,CAAd;CACA,gBAAMO,KAAK,GAAG51C,UAAU,CAACuR,IAAX,CAAgBpU,OAAM,CAACkI,MAAP,CAAcX,QAAd,CAAuB60B,CAAvB,EAA0BA,CAAC,GAAI8b,KAA/B,CAAhB,CAAd,CAH+B;CAK/B;CACA;CACA;;CACA,gBAAMR,WAAW,GAAG,CAACa,KAAD,EAAQC,KAAR,EAAeC,KAAf,CAApB;CACAl4C,UAAAA,WAAW,CAAC;CACRC,YAAAA,GAAG,EAAE0zC,eAAe,CAACtE,MADb;CAERp6B,YAAAA,MAAM,EAAEkiC,WAFA;CAGRf,YAAAA,KAAK,EAAE,KAAKA,KAHJ;CAIRC,YAAAA;CAJQ,WAAD,EAKRc,WAAW,CAAC1f,GAAZ,CAAgB7mB,CAAC,IAAIA,CAAC,CAACvO,MAAvB,CALQ,CAAX;CAMH,SAfD;CAgBH;CACJ,KApHS;CAqHV81C,IAAAA,QAAQ,EAAE,UAAUpiC,SAAV,EAAqB;CAC3B,UAAI,CAACA,SAAL,EAAgB;CACZ,eAAO,CAAC,CAAR;CACH;;CACD,UAAI,CAAC,KAAKqiC,cAAV,EAA0B;CACtB,aAAKA,cAAL,GAAsBriC,SAAtB;CACA,aAAKsiC,cAAL,GAAsBriC,IAAI,CAACC,GAAL,EAAtB;CACA,aAAKmgC,KAAL,GAAa,CAAC,CAAd;CACH,OAJD,MAIO;CAEH,YAAIrgC,SAAJ,EAAe;CACX,gBAAMuiC,cAAc,GAAItiC,IAAI,CAACC,GAAL,KAAa,KAAKoiC,cAA1C;CACA,gBAAME,aAAa,GAAIxiC,SAAS,GAAG,KAAKqiC,cAAxC;;CACA,cAAIE,cAAc,IAAIC,aAAtB,EAAqC;CACjC,iBAAKnC,KAAL,GAAakC,cAAc,GAAGC,aAA9B;CACH,WAFD,MAEO;CACH,iBAAKnC,KAAL,GAAamC,aAAa,GAAGD,cAA7B;CACH;CACJ;CACJ;;CACD,aAAO,KAAKlC,KAAZ;CACH,KA1IS;CA2IVoC,IAAAA,UAAU,EAAE,YAAY;CACpB,WAAKJ,cAAL,GAAsB,IAAtB;CACA,WAAKC,cAAL,GAAsB,IAAtB;CACA,WAAKjC,KAAL,GAAa,CAAC,CAAd;CACH,KA/IS;CAiJVnqC,IAAAA,IAAI,EAAE,YAAY;CACd2mC,MAAAA,SAAO,CAACgD,GAAR,CAAYrN,KAAZ,IAAqB3oC,OAAO,CAACC,GAAR,CAAY,0BAAZ,CAArB;;CACA,YAAM44C,SAAS,GAAI71C,IAAD,IAAU;CACxB;CACA,YAAIgwC,SAAO,CAACgD,GAAR,CAAY1C,MAAZ,IAAsBN,SAAO,CAACS,YAAR,EAAtB,IAAgDzwC,IAAI,CAACue,IAAL,KAAcgzB,UAAU,CAACC,KAAzE,IAAkFiB,eAAe,CAACtuC,MAAtG,EAA8G;CAC1GsuC,UAAAA,eAAe,CAACtuC,MAAhB,CAAuBnE,IAAI,CAAC0zC,OAA5B,EAAqC1zC,IAAI,CAACyzC,EAA1C;CACH,SAFD,MAEO;CACH;CACAzzC,UAAAA,IAAI,CAACgwC,OAAL,CAAa7rC,MAAb,CAAoBnE,IAAI,CAAC0zC,OAAzB,EAAkC1zC,IAAI,CAACyzC,EAAvC;CACH;CACJ,OARD;;CASA,YAAMqC,IAAI,GAAG,MAAM;CACf,YAAIr2C,MAAM,CAACQ,MAAX,EAAmB;CACf,cAAI,KAAK81C,QAAT,EAAmB;CACf;CACA/1C,YAAAA,IAAI,GAAGP,MAAM,CAACwJ,KAAP,EAAP,CAFe;;CAIf,gBAAIjJ,IAAI,CAACue,IAAL,KAAcgzB,UAAU,CAAC5B,KAAzB,IAAkC3vC,IAAI,CAAC0zC,OAAL,CAAa,CAAb,MAAoB,CAA1D,EAA6D;CACzDmC,cAAAA,SAAS,CAAC71C,IAAD,CAAT;CACH;;CACD,mBAAO,CAACA,IAAI,CAAC2zC,QAAN,IAAkBl0C,MAAM,CAACQ,MAAhC,EAAwC;CACpC;CACAD,cAAAA,IAAI,GAAGP,MAAM,CAACwJ,KAAP,EAAP,CAFoC;;CAIpC,kBAAIjJ,IAAI,CAACue,IAAL,KAAcgzB,UAAU,CAAC5B,KAAzB,IAAkC3vC,IAAI,CAAC0zC,OAAL,CAAa,CAAb,MAAoB,CAA1D,EAA6D;CACzDmC,gBAAAA,SAAS,CAAC71C,IAAD,CAAT;CACH;CACJ;;CACD,gBAAIA,IAAI,CAAC2zC,QAAT,EAAmB;CACf,mBAAKoC,QAAL,GAAgB,KAAhB;;CACAF,cAAAA,SAAS,CAAC71C,IAAD,CAAT;CACH;CACJ,WAnBD,MAmBO;CACH,gBAAIA,IAAI,GAAGP,MAAM,CAAC,CAAD,CAAjB;;CACA,gBAAI,KAAK81C,QAAL,CAAcv1C,IAAI,CAACyzC,EAAnB,MAA2B,CAAC,CAAhC,EAAmC;CAC/B;CACAh0C,cAAAA,MAAM,CAACwJ,KAAP;;CACA4sC,cAAAA,SAAS,CAAC71C,IAAD,CAAT;CACH,aAJD,MAIO,IAAI,KAAKwzC,KAAL,GAAaxD,SAAO,CAACgD,GAAR,CAAY5E,WAAZ,GAA0B4B,SAAO,CAACgD,GAAR,CAAY3E,gBAAvD,EAAyE;CAC5E;CACA,mBAAKuH,UAAL;CACA,mBAAKG,QAAL,GAAgB,IAAhB;CACH,aAJM,MAIA;CACH,qBAAOt2C,MAAM,CAACQ,MAAd,EAAsB;CAClBD,gBAAAA,IAAI,GAAGP,MAAM,CAAC,CAAD,CAAb;;CACA,oBAAI,KAAK81C,QAAL,CAAcv1C,IAAI,CAACyzC,EAAnB,IAAyBzD,SAAO,CAACgD,GAAR,CAAY5E,WAAzC,EAAsD;CAClD;CACA3uC,kBAAAA,MAAM,CAACwJ,KAAP;;CACA4sC,kBAAAA,SAAS,CAAC71C,IAAD,CAAT;CACH,iBAJD,MAIO;CACH;CACA;CACH;CACJ;CACJ;CACJ;CACJ;CAGJ,OAhDD;;CAiDA,WAAKg2C,MAAL,GAAcrrC,WAAW,CAACmrC,IAAD,EAAO,EAAP,CAAzB;CACH,KA9MS;CA+MVjjC,IAAAA,KAAK,EAAE,YAAY;CACfm9B,MAAAA,SAAO,CAACgD,GAAR,CAAYrN,KAAZ,IAAqB3oC,OAAO,CAACC,GAAR,CAAY,4BAAZ,CAArB;CACA2N,MAAAA,aAAa,CAAC,KAAKorC,MAAN,CAAb;CACA,WAAKA,MAAL,GAAc,IAAd;CACAC,MAAAA,YAAY,CAACC,KAAb,IAAsBD,YAAY,CAACC,KAAb,EAAtB;CACAC,MAAAA,YAAY,CAACD,KAAb,IAAsBC,YAAY,CAACD,KAAb,EAAtB;CACAzD,MAAAA,eAAe,CAACyB,KAAhB,IAAyBzB,eAAe,CAACyB,KAAhB,EAAzB;CACA,WAAKsB,cAAL,GAAsB,IAAtB;CACA,WAAKC,cAAL,GAAsB,IAAtB;CACA,WAAKjC,KAAL,GAAa,CAAC,CAAd;CACA,WAAKuC,QAAL,GAAgB,KAAhB;;CAEA,UAAI,KAAKd,QAAT,EAAmB;CACf,aAAKA,QAAL,CAAc3H,OAAd;CACA,aAAKsF,eAAL,GAAuB,IAAvB;CACA,aAAKoC,iBAAL,GAAyB,IAAzB;CACA,aAAKnC,kBAAL,GAA0B,IAA1B;CACH;;CACDpzC,MAAAA,MAAM,GAAG,EAAT;CACA+yC,MAAAA,eAAe,GAAG,EAAlB;CACA,aAAO,KAAKiC,eAAZ;CACA,aAAO,KAAKU,IAAZ;CACH,KArOS;CAsOViB,IAAAA,UAAU,EAAE,UAAUtL,UAAV,EAAsB7e,OAAtB,EAA+B;CACvC;CACA,UAAIA,OAAO,CAAC1N,IAAR,KAAiBgzB,UAAU,CAAC5B,KAAhC,EAAuC;CACnClwC,QAAAA,MAAM,CAACmS,IAAP,CAAY;CACR6hC,UAAAA,EAAE,EAAExnB,OAAO,CAACwnB,EADJ;CAERC,UAAAA,OAAO,EAAE5I,UAFD;CAGRkF,UAAAA,OAAO,EAAEiG,YAHD;CAIR13B,UAAAA,IAAI,EAAEgzB,UAAU,CAAC5B;CAJT,SAAZ;CAMH,OAPD,MAOO,IAAI1jB,OAAO,CAAC1N,IAAR,KAAiBgzB,UAAU,CAACC,KAAhC,EAAuC;CAC1C/xC,QAAAA,MAAM,CAACmS,IAAP,CAAY;CACR6hC,UAAAA,EAAE,EAAExnB,OAAO,CAACwnB,EADJ;CAERC,UAAAA,OAAO,EAAE5I,UAFD;CAGRkF,UAAAA,OAAO,EAAEmG,YAHD;CAIR53B,UAAAA,IAAI,EAAEgzB,UAAU,CAACC,KAJT;CAKRmC,UAAAA,QAAQ,EAAE1nB,OAAO,CAAC0nB;CALV,SAAZ;CAOH;CACJ;CAxPS,GAAd;CA0PA,MAAIsC,YAAY,GAAG,IAAIp5C,OAAM,CAACw5C,YAAX,CAAwBrG,SAAxB,CAAnB;CACA,MAAImG,YAAY,GAAG,IAAIt5C,OAAM,CAACi2C,YAAX,CAAwB9C,SAAxB,CAAnB;CACA5yC,EAAAA,WAAW,CAAC;CAACC,IAAAA,GAAG,EAAEo0C,gBAAgB,CAACpoC;CAAvB,GAAD,CAAX;;CACAtI,EAAAA,IAAI,CAACu1C,SAAL,GAAiB,UAAUh9B,KAAV,EAAiB;CAC9B,QAAInW,GAAG,GAAGmW,KAAK,CAACtZ,IAAhB;;CACA,YAAQmD,GAAG,CAAC9F,GAAZ;CACI,WAAKo0C,gBAAgB,CAACpoC,IAAtB;CACI,YAAI;CACA2mC,UAAAA,SAAO,CAACgD,GAAR,GAAcx1C,MAAM,CAACC,MAAP,CAAcuyC,SAAO,CAACgD,GAAtB,EAA2BuD,IAAI,CAACC,KAAL,CAAWrzC,GAAG,CAAC6vC,GAAf,CAA3B,CAAd;CACH,SAFD,CAEE,OAAO/nC,CAAP,EAAU;;CAGZgrC,QAAAA,YAAY,CAACQ,WAAb,GAA2BtzC,GAAG,CAACmxC,UAA/B;CACAtE,QAAAA,SAAO,CAAC3mC,IAAR;CACA;;CACJ,WAAKooC,gBAAgB,CAACttC,MAAtB;CACI6rC,QAAAA,SAAO,CAACoG,UAAR,CAAmBjzC,GAAG,CAAC1D,MAAvB,EAA+B0D,GAAG,CAAC8oB,OAAnC;CACA;;CACJ,WAAKwlB,gBAAgB,CAACC,WAAtB;CACIuE,QAAAA,YAAY,CAAC9xC,MAAb,CAAoBhB,GAAG,CAAC1D,MAAxB,EAAgC0D,GAAG,CAACswC,EAApC;CACA;;CACJ,WAAKhC,gBAAgB,CAACE,WAAtB;CACIwE,QAAAA,YAAY,CAAChyC,MAAb,CAAoBhB,GAAG,CAAC1D,MAAxB,EAAgC0D,GAAG,CAACswC,EAApC;CACA;;CACJ,WAAKhC,gBAAgB,CAAC5+B,KAAtB;CACIm9B,QAAAA,SAAO,CAACn9B,KAAR;CACA;;CACJ,WAAK4+B,gBAAgB,CAACG,YAAtB;CACI5B,QAAAA,SAAO,CAACgD,GAAR,CAAY7vC,GAAG,CAACmV,GAAhB,IAAuBnV,GAAG,CAACmL,KAA3B;CACA;CAxBR;CA0BH,GA5BD;CA6BH,CApWD;;;;;;"} \ No newline at end of file +{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/worker.js"],"sourcesContent":["var Module=typeof Module!=\"undefined\"?Module:{};var Module={};Module.print=function(text){console.log(\"Jessibuca: [worker]:\",text)};Module.printErr=function(text){console.warn(\"Jessibuca: [worker]:\",text);postMessage({cmd:\"wasmError\",message:text})};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module[\"ENVIRONMENT\"]){throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\")}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e==\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(!(typeof process==\"object\"&&typeof require==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process==\"object\"&&typeof require===\"function\"||typeof window==\"object\"||typeof importScripts==\"function\")throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){let data;if(typeof readbuffer==\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data==\"object\");return data};readAsync=function readAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit==\"function\"){quit_=((status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)})}if(typeof print!=\"undefined\"){if(typeof console==\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!=\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(!(typeof window==\"object\"||typeof importScripts==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{throw new Error(\"environment detection error\")}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module[\"arguments\"])arguments_=Module[\"arguments\"];legacyModuleProp(\"arguments\",\"arguments_\");if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];legacyModuleProp(\"thisProgram\",\"thisProgram\");if(Module[\"quit\"])quit_=Module[\"quit\"];legacyModuleProp(\"quit\",\"quit_\");assert(typeof Module[\"memoryInitializerPrefixURL\"]==\"undefined\",\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"pthreadMainPrefixURL\"]==\"undefined\",\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"cdInitializerPrefixURL\"]==\"undefined\",\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"filePackagePrefixURL\"]==\"undefined\",\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"read\"]==\"undefined\",\"Module.read option was removed (modify read_ in JS)\");assert(typeof Module[\"readAsync\"]==\"undefined\",\"Module.readAsync option was removed (modify readAsync in JS)\");assert(typeof Module[\"readBinary\"]==\"undefined\",\"Module.readBinary option was removed (modify readBinary in JS)\");assert(typeof Module[\"setWindowTitle\"]==\"undefined\",\"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");assert(typeof Module[\"TOTAL_MEMORY\"]==\"undefined\",\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");legacyModuleProp(\"read\",\"read_\");legacyModuleProp(\"readAsync\",\"readAsync\");legacyModuleProp(\"readBinary\",\"readBinary\");legacyModuleProp(\"setWindowTitle\",\"setWindowTitle\");assert(!ENVIRONMENT_IS_SHELL,\"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.\");var POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function uleb128Encode(n){assert(n<16384);if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;iabort(unexportedMessage(sym,isFSSybol)))}}var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];legacyModuleProp(\"wasmBinary\",\"wasmBinary\");var noExitRuntime=Module[\"noExitRuntime\"]||true;legacyModuleProp(\"noExitRuntime\",\"noExitRuntime\");if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed\"+(text?\": \"+text:\"\"))}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!==\"array\",'Return type should not be \"array\".');if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce(\"Invalid Unicode code point 0x\"+u.toString(16)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite==\"number\",\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){assert(ptr%2==0,\"Pointer passed to UTF16ToString must be aligned to two bytes!\");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,\"Pointer passed to stringToUTF16 must be aligned to two bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){assert(ptr%4==0,\"Pointer passed to UTF32ToString must be aligned to four bytes!\");var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,\"Pointer passed to stringToUTF32 must be aligned to four bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){assert(array.length>=0,\"writeArrayToMemory array must have a length (should be an array or typed array)\");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var TOTAL_STACK=5242880;if(Module[\"TOTAL_STACK\"])assert(TOTAL_STACK===Module[\"TOTAL_STACK\"],\"the stack size can no longer be determined at runtime\");var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;legacyModuleProp(\"INITIAL_MEMORY\",\"INITIAL_MEMORY\");assert(INITIAL_MEMORY>=TOTAL_STACK,\"INITIAL_MEMORY should be larger than TOTAL_STACK, was \"+INITIAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");assert(typeof Int32Array!=\"undefined\"&&typeof Float64Array!==\"undefined\"&&Int32Array.prototype.subarray!=undefined&&Int32Array.prototype.set!=undefined,\"JS engine does not provide full typed array support\");assert(!Module[\"wasmMemory\"],\"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally\");assert(INITIAL_MEMORY==67108864,\"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically\");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);HEAP32[max>>2]=34821223;HEAP32[max+4>>2]=2310721022;HEAP32[0]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\"+cookie2.toString(16)+\" 0x\"+cookie1.toString(16))}if(HEAP32[0]!==1668509029)abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\")}(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\"})();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,\"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.fround,\"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.clz32,\"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.trunc,\"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=\"undefined\"){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err(\"still waiting on run dependencies:\")}err(\"dependency: \"+dep)}if(shown){err(\"(end of list)\")}},1e4)}}else{err(\"warning: run dependency added without ID\")}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err(\"warning: run dependency removed without ID\")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}function createExportWrapper(name,fixedasm){return function(){var displayName=name;var asm=fixedasm;if(!fixedasm){asm=Module[\"asm\"]}assert(runtimeInitialized,\"native function `\"+displayName+\"` called before runtime initialization\");if(!asm[name]){assert(asm[name],\"exported native function `\"+displayName+\"` not found\")}return asm[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile=\"decoder.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"memory\"];assert(wasmMemory,\"memory not found in wasm exports\");updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"__indirect_function_table\"];assert(wasmTable,\"table not found in wasm exports\");addOnInit(Module[\"asm\"][\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,\"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");trueModule=null;receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);if(isFileURI(wasmBinaryFile)){err(\"warning: Loading from a file URI (\"+wasmBinaryFile+\") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing\")}abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){warnOnce(\"warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return\"(no stack trace available)\"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){assert(alignment,\"alignment argument is required\");return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{assert(typeof parent==\"object\");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{if(typeof type==\"string\"){throw type}var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1);assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack){Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true});this.stack=demangleAll(this.stack)}};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;___stdio_exit();for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},absolutePath:()=>{abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder:()=>{abort(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink:()=>{abort(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath:()=>{abort(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc:()=>{abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath:()=>{abort(\"FS.standardizePath has been removed; use PATH.normalize instead\")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=(handle=>handle);return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning.stack.replace(/^Error: /,\"\"));releaseClassHandle(info.$$)});attachFinalizer=(handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};var cls=$$.ptrType.registeredClass;info.leakWarning=new Error(\"Embind found a leaked C++ instance \"+cls.name+\" <0x\"+$$.ptr.toString(16)+\">.\\n\"+\"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\"+\"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\"+\"Originally allocated\");if(\"captureStackTrace\"in Error){Error.captureStackTrace(info.leakWarning,RegisteredPointer_fromWireType)}finalizationRegistry.register(handle,info,handle)}return handle});detachFinalizer=(handle=>finalizationRegistry.unregister(handle));return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){assert(\"dynCall_\"+sig in Module,\"bad function pointer type - no table for sig '\"+sig+\"'\");if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,\"--\").length)}else{assert(sig.length==1)}var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),\"missing table entry in dynCall: \"+ptr);return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.includes(\"j\"),\"getDynCaller should only be called with i64 sigs\");var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=(()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)});whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{throwUnboundTypeError(\"Cannot access \"+humanName+\" due to unbound types\",[getterReturnType,setterArgumentType])})}else{desc.set=(v=>{throwBindingError(humanName+\" is a read-only property\")})}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+toTypeName)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=Emval.toHandle(destructors);HEAP32[destructorsRef>>2]=rd;return returnType[\"toWireType\"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+\"_$\"+types.slice(1).map(function(t){return t.name}).join(\"_\")+\"$\";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=[\"retType\"];var args=[retType];var argsList=\"\";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"native code called abort()\")}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){assert(hi===(hi|0));return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3]);argIndex+=8}else if(type==\"i64\"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type=\"i32\";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg(\"i32\");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg(\"i32\");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case\"h\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case\"l\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case\"L\":case\"q\":case\"j\":argSize=8;break;case\"z\":case\"t\":case\"I\":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case\"d\":case\"i\":case\"u\":case\"o\":case\"x\":case\"X\":case\"p\":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg(\"i\"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix=\"\";if(next==100||next==105){argText=reSign(currArg,8*argSize).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?\"0\":\"\")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?\"0x\":\"\";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?\"f\":\"F\").charCodeAt(0);precision-=exponent+1}else{next=(next==103?\"e\":\"E\").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\\d$/.test(argText)){argText=argText.slice(0,-1)+\"0\"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText=\"-\"+argText}}var parts=argText.split(\"e\");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(\".\")&&(parts[0].slice(-1)==\"0\"||parts[0].slice(-1)==\".\")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(\".\")==-1)parts[0]+=\".\";while(precision>effectivePrecision++)parts[0]+=\"0\"}argText=parts[0]+(parts.length>1?\"e\"+parts[1]:\"\");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText=\"+\"+argText}else if(flagPadSign){argText=\" \"+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg(\"i8\"));break}case\"n\":{var ptr=getNextArg(\"i32*\");HEAP32[ptr>>2]=ret.length;break}case\"%\":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(var i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a==\"number\"||typeof a==\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce(\"EM_LOG_DEMANGLE is deprecated; ignoring\")}if(flags&8&&typeof emscripten_source_map==\"undefined\"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes(\"_emscripten_\"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(var l in lines){var line=lines[l];var symbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+symbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+symbolName:\" at \"+symbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\\s+$/,\"\");str+=(str.length>0?\"\\n\":\"\")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){err(\"emscripten_realloc_buffer: Attempted to grow heap from \"+buffer.byteLength+\" bytes to \"+size+\" bytes, but got error: \"+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;assert(requestedSize>oldSize);var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){err(\"Cannot enlarge memory, asked to go up to \"+requestedSize+\" bytes, but the limit is \"+maxHeapSize+\" bytes!\");return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}err(\"Failed to grow the heap from \"+oldSize+\" bytes to \"+newSize+\" bytes, not enough memory!\");return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();ERRNO_CODES={\"EPERM\":63,\"ENOENT\":44,\"ESRCH\":71,\"EINTR\":27,\"EIO\":29,\"ENXIO\":60,\"E2BIG\":1,\"ENOEXEC\":45,\"EBADF\":8,\"ECHILD\":12,\"EAGAIN\":6,\"EWOULDBLOCK\":6,\"ENOMEM\":48,\"EACCES\":2,\"EFAULT\":21,\"ENOTBLK\":105,\"EBUSY\":10,\"EEXIST\":20,\"EXDEV\":75,\"ENODEV\":43,\"ENOTDIR\":54,\"EISDIR\":31,\"EINVAL\":28,\"ENFILE\":41,\"EMFILE\":33,\"ENOTTY\":59,\"ETXTBSY\":74,\"EFBIG\":22,\"ENOSPC\":51,\"ESPIPE\":70,\"EROFS\":69,\"EMLINK\":34,\"EPIPE\":64,\"EDOM\":18,\"ERANGE\":68,\"ENOMSG\":49,\"EIDRM\":24,\"ECHRNG\":106,\"EL2NSYNC\":156,\"EL3HLT\":107,\"EL3RST\":108,\"ELNRNG\":109,\"EUNATCH\":110,\"ENOCSI\":111,\"EL2HLT\":112,\"EDEADLK\":16,\"ENOLCK\":46,\"EBADE\":113,\"EBADR\":114,\"EXFULL\":115,\"ENOANO\":104,\"EBADRQC\":103,\"EBADSLT\":102,\"EDEADLOCK\":16,\"EBFONT\":101,\"ENOSTR\":100,\"ENODATA\":116,\"ETIME\":117,\"ENOSR\":118,\"ENONET\":119,\"ENOPKG\":120,\"EREMOTE\":121,\"ENOLINK\":47,\"EADV\":122,\"ESRMNT\":123,\"ECOMM\":124,\"EPROTO\":65,\"EMULTIHOP\":36,\"EDOTDOT\":125,\"EBADMSG\":9,\"ENOTUNIQ\":126,\"EBADFD\":127,\"EREMCHG\":128,\"ELIBACC\":129,\"ELIBBAD\":130,\"ELIBSCN\":131,\"ELIBMAX\":132,\"ELIBEXEC\":133,\"ENOSYS\":52,\"ENOTEMPTY\":55,\"ENAMETOOLONG\":37,\"ELOOP\":32,\"EOPNOTSUPP\":138,\"EPFNOSUPPORT\":139,\"ECONNRESET\":15,\"ENOBUFS\":42,\"EAFNOSUPPORT\":5,\"EPROTOTYPE\":67,\"ENOTSOCK\":57,\"ENOPROTOOPT\":50,\"ESHUTDOWN\":140,\"ECONNREFUSED\":14,\"EADDRINUSE\":3,\"ECONNABORTED\":13,\"ENETUNREACH\":40,\"ENETDOWN\":38,\"ETIMEDOUT\":73,\"EHOSTDOWN\":142,\"EHOSTUNREACH\":23,\"EINPROGRESS\":26,\"EALREADY\":7,\"EDESTADDRREQ\":17,\"EMSGSIZE\":35,\"EPROTONOSUPPORT\":66,\"ESOCKTNOSUPPORT\":137,\"EADDRNOTAVAIL\":4,\"ENETRESET\":39,\"EISCONN\":30,\"ENOTCONN\":53,\"ETOOMANYREFS\":141,\"EUSERS\":136,\"EDQUOT\":19,\"ESTALE\":72,\"ENOTSUP\":138,\"ENOMEDIUM\":148,\"EILSEQ\":25,\"EOVERFLOW\":61,\"ECANCELED\":11,\"ENOTRECOVERABLE\":56,\"EOWNERDEAD\":62,\"ESTRPIPE\":135};embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function checkIncomingModuleAPI(){ignoredModuleProp(\"fetchSettings\")}var asmLibraryArg={\"__syscall_fcntl64\":___syscall_fcntl64,\"__syscall_openat\":___syscall_openat,\"_embind_register_bigint\":__embind_register_bigint,\"_embind_register_bool\":__embind_register_bool,\"_embind_register_class\":__embind_register_class,\"_embind_register_class_constructor\":__embind_register_class_constructor,\"_embind_register_class_function\":__embind_register_class_function,\"_embind_register_class_property\":__embind_register_class_property,\"_embind_register_emval\":__embind_register_emval,\"_embind_register_float\":__embind_register_float,\"_embind_register_integer\":__embind_register_integer,\"_embind_register_memory_view\":__embind_register_memory_view,\"_embind_register_std_string\":__embind_register_std_string,\"_embind_register_std_wstring\":__embind_register_std_wstring,\"_embind_register_void\":__embind_register_void,\"_emscripten_date_now\":__emscripten_date_now,\"_emval_as\":__emval_as,\"_emval_call_void_method\":__emval_call_void_method,\"_emval_decref\":__emval_decref,\"_emval_get_method_caller\":__emval_get_method_caller,\"_emval_incref\":__emval_incref,\"_emval_run_destructors\":__emval_run_destructors,\"_emval_take_value\":__emval_take_value,\"_gmtime_js\":__gmtime_js,\"_localtime_js\":__localtime_js,\"_mktime_js\":__mktime_js,\"_tzset_js\":__tzset_js,\"abort\":_abort,\"emscripten_log\":_emscripten_log,\"emscripten_resize_heap\":_emscripten_resize_heap,\"environ_get\":_environ_get,\"environ_sizes_get\":_environ_sizes_get,\"fd_close\":_fd_close,\"fd_fdstat_get\":_fd_fdstat_get,\"fd_read\":_fd_read,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"setTempRet0\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=createExportWrapper(\"__wasm_call_ctors\");var _free=Module[\"_free\"]=createExportWrapper(\"free\");var _malloc=Module[\"_malloc\"]=createExportWrapper(\"malloc\");var _strlen=Module[\"_strlen\"]=createExportWrapper(\"strlen\");var ___errno_location=Module[\"___errno_location\"]=createExportWrapper(\"__errno_location\");var ___getTypeName=Module[\"___getTypeName\"]=createExportWrapper(\"__getTypeName\");var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=createExportWrapper(\"__embind_register_native_and_builtin_types\");var ___stdio_exit=Module[\"___stdio_exit\"]=createExportWrapper(\"__stdio_exit\");var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=createExportWrapper(\"emscripten_builtin_memalign\");var _emscripten_stack_init=Module[\"_emscripten_stack_init\"]=function(){return(_emscripten_stack_init=Module[\"_emscripten_stack_init\"]=Module[\"asm\"][\"emscripten_stack_init\"]).apply(null,arguments)};var _emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=function(){return(_emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=Module[\"asm\"][\"emscripten_stack_get_free\"]).apply(null,arguments)};var _emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=function(){return(_emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null,arguments)};var _emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=function(){return(_emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=createExportWrapper(\"stackSave\");var stackRestore=Module[\"stackRestore\"]=createExportWrapper(\"stackRestore\");var stackAlloc=Module[\"stackAlloc\"]=createExportWrapper(\"stackAlloc\");var dynCall_ijiii=Module[\"dynCall_ijiii\"]=createExportWrapper(\"dynCall_ijiii\");var dynCall_viiijj=Module[\"dynCall_viiijj\"]=createExportWrapper(\"dynCall_viiijj\");var dynCall_jij=Module[\"dynCall_jij\"]=createExportWrapper(\"dynCall_jij\");var dynCall_jii=Module[\"dynCall_jii\"]=createExportWrapper(\"dynCall_jii\");var dynCall_jiji=Module[\"dynCall_jiji\"]=createExportWrapper(\"dynCall_jiji\");var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=112940;unexportedRuntimeFunction(\"intArrayFromString\",false);unexportedRuntimeFunction(\"intArrayToString\",false);unexportedRuntimeFunction(\"ccall\",false);unexportedRuntimeFunction(\"cwrap\",false);unexportedRuntimeFunction(\"setValue\",false);unexportedRuntimeFunction(\"getValue\",false);unexportedRuntimeFunction(\"allocate\",false);unexportedRuntimeFunction(\"UTF8ArrayToString\",false);unexportedRuntimeFunction(\"UTF8ToString\",false);unexportedRuntimeFunction(\"stringToUTF8Array\",false);unexportedRuntimeFunction(\"stringToUTF8\",false);unexportedRuntimeFunction(\"lengthBytesUTF8\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"addOnPreRun\",false);unexportedRuntimeFunction(\"addOnInit\",false);unexportedRuntimeFunction(\"addOnPreMain\",false);unexportedRuntimeFunction(\"addOnExit\",false);unexportedRuntimeFunction(\"addOnPostRun\",false);unexportedRuntimeFunction(\"writeStringToMemory\",false);unexportedRuntimeFunction(\"writeArrayToMemory\",false);unexportedRuntimeFunction(\"writeAsciiToMemory\",false);unexportedRuntimeFunction(\"addRunDependency\",true);unexportedRuntimeFunction(\"removeRunDependency\",true);unexportedRuntimeFunction(\"FS_createFolder\",false);unexportedRuntimeFunction(\"FS_createPath\",true);unexportedRuntimeFunction(\"FS_createDataFile\",true);unexportedRuntimeFunction(\"FS_createPreloadedFile\",true);unexportedRuntimeFunction(\"FS_createLazyFile\",true);unexportedRuntimeFunction(\"FS_createLink\",false);unexportedRuntimeFunction(\"FS_createDevice\",true);unexportedRuntimeFunction(\"FS_unlink\",true);unexportedRuntimeFunction(\"getLEB\",false);unexportedRuntimeFunction(\"getFunctionTables\",false);unexportedRuntimeFunction(\"alignFunctionTables\",false);unexportedRuntimeFunction(\"registerFunctions\",false);unexportedRuntimeFunction(\"addFunction\",false);unexportedRuntimeFunction(\"removeFunction\",false);unexportedRuntimeFunction(\"prettyPrint\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"getCompilerSetting\",false);unexportedRuntimeFunction(\"print\",false);unexportedRuntimeFunction(\"printErr\",false);unexportedRuntimeFunction(\"getTempRet0\",false);unexportedRuntimeFunction(\"setTempRet0\",false);unexportedRuntimeFunction(\"callMain\",false);unexportedRuntimeFunction(\"abort\",false);unexportedRuntimeFunction(\"keepRuntimeAlive\",false);unexportedRuntimeFunction(\"ptrToString\",false);unexportedRuntimeFunction(\"zeroMemory\",false);unexportedRuntimeFunction(\"stringToNewUTF8\",false);unexportedRuntimeFunction(\"emscripten_realloc_buffer\",false);unexportedRuntimeFunction(\"ENV\",false);unexportedRuntimeFunction(\"ERRNO_CODES\",false);unexportedRuntimeFunction(\"ERRNO_MESSAGES\",false);unexportedRuntimeFunction(\"setErrNo\",false);unexportedRuntimeFunction(\"inetPton4\",false);unexportedRuntimeFunction(\"inetNtop4\",false);unexportedRuntimeFunction(\"inetPton6\",false);unexportedRuntimeFunction(\"inetNtop6\",false);unexportedRuntimeFunction(\"readSockaddr\",false);unexportedRuntimeFunction(\"writeSockaddr\",false);unexportedRuntimeFunction(\"DNS\",false);unexportedRuntimeFunction(\"getHostByName\",false);unexportedRuntimeFunction(\"Protocols\",false);unexportedRuntimeFunction(\"Sockets\",false);unexportedRuntimeFunction(\"getRandomDevice\",false);unexportedRuntimeFunction(\"traverseStack\",false);unexportedRuntimeFunction(\"UNWIND_CACHE\",false);unexportedRuntimeFunction(\"convertPCtoSourceLocation\",false);unexportedRuntimeFunction(\"readAsmConstArgsArray\",false);unexportedRuntimeFunction(\"readAsmConstArgs\",false);unexportedRuntimeFunction(\"mainThreadEM_ASM\",false);unexportedRuntimeFunction(\"jstoi_q\",false);unexportedRuntimeFunction(\"jstoi_s\",false);unexportedRuntimeFunction(\"getExecutableName\",false);unexportedRuntimeFunction(\"listenOnce\",false);unexportedRuntimeFunction(\"autoResumeAudioContext\",false);unexportedRuntimeFunction(\"dynCallLegacy\",false);unexportedRuntimeFunction(\"getDynCaller\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"setWasmTableEntry\",false);unexportedRuntimeFunction(\"getWasmTableEntry\",false);unexportedRuntimeFunction(\"handleException\",false);unexportedRuntimeFunction(\"runtimeKeepalivePush\",false);unexportedRuntimeFunction(\"runtimeKeepalivePop\",false);unexportedRuntimeFunction(\"callUserCallback\",false);unexportedRuntimeFunction(\"maybeExit\",false);unexportedRuntimeFunction(\"safeSetTimeout\",false);unexportedRuntimeFunction(\"asmjsMangle\",false);unexportedRuntimeFunction(\"asyncLoad\",false);unexportedRuntimeFunction(\"alignMemory\",false);unexportedRuntimeFunction(\"mmapAlloc\",false);unexportedRuntimeFunction(\"reallyNegative\",false);unexportedRuntimeFunction(\"unSign\",false);unexportedRuntimeFunction(\"reSign\",false);unexportedRuntimeFunction(\"formatString\",false);unexportedRuntimeFunction(\"PATH\",false);unexportedRuntimeFunction(\"PATH_FS\",false);unexportedRuntimeFunction(\"SYSCALLS\",false);unexportedRuntimeFunction(\"getSocketFromFD\",false);unexportedRuntimeFunction(\"getSocketAddress\",false);unexportedRuntimeFunction(\"JSEvents\",false);unexportedRuntimeFunction(\"registerKeyEventCallback\",false);unexportedRuntimeFunction(\"specialHTMLTargets\",false);unexportedRuntimeFunction(\"maybeCStringToJsString\",false);unexportedRuntimeFunction(\"findEventTarget\",false);unexportedRuntimeFunction(\"findCanvasEventTarget\",false);unexportedRuntimeFunction(\"getBoundingClientRect\",false);unexportedRuntimeFunction(\"fillMouseEventData\",false);unexportedRuntimeFunction(\"registerMouseEventCallback\",false);unexportedRuntimeFunction(\"registerWheelEventCallback\",false);unexportedRuntimeFunction(\"registerUiEventCallback\",false);unexportedRuntimeFunction(\"registerFocusEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceOrientationEventData\",false);unexportedRuntimeFunction(\"registerDeviceOrientationEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceMotionEventData\",false);unexportedRuntimeFunction(\"registerDeviceMotionEventCallback\",false);unexportedRuntimeFunction(\"screenOrientation\",false);unexportedRuntimeFunction(\"fillOrientationChangeEventData\",false);unexportedRuntimeFunction(\"registerOrientationChangeEventCallback\",false);unexportedRuntimeFunction(\"fillFullscreenChangeEventData\",false);unexportedRuntimeFunction(\"registerFullscreenChangeEventCallback\",false);unexportedRuntimeFunction(\"registerRestoreOldStyle\",false);unexportedRuntimeFunction(\"hideEverythingExceptGivenElement\",false);unexportedRuntimeFunction(\"restoreHiddenElements\",false);unexportedRuntimeFunction(\"setLetterbox\",false);unexportedRuntimeFunction(\"currentFullscreenStrategy\",false);unexportedRuntimeFunction(\"restoreOldWindowedStyle\",false);unexportedRuntimeFunction(\"softFullscreenResizeWebGLRenderTarget\",false);unexportedRuntimeFunction(\"doRequestFullscreen\",false);unexportedRuntimeFunction(\"fillPointerlockChangeEventData\",false);unexportedRuntimeFunction(\"registerPointerlockChangeEventCallback\",false);unexportedRuntimeFunction(\"registerPointerlockErrorEventCallback\",false);unexportedRuntimeFunction(\"requestPointerLock\",false);unexportedRuntimeFunction(\"fillVisibilityChangeEventData\",false);unexportedRuntimeFunction(\"registerVisibilityChangeEventCallback\",false);unexportedRuntimeFunction(\"registerTouchEventCallback\",false);unexportedRuntimeFunction(\"fillGamepadEventData\",false);unexportedRuntimeFunction(\"registerGamepadEventCallback\",false);unexportedRuntimeFunction(\"registerBeforeUnloadEventCallback\",false);unexportedRuntimeFunction(\"fillBatteryEventData\",false);unexportedRuntimeFunction(\"battery\",false);unexportedRuntimeFunction(\"registerBatteryEventCallback\",false);unexportedRuntimeFunction(\"setCanvasElementSize\",false);unexportedRuntimeFunction(\"getCanvasElementSize\",false);unexportedRuntimeFunction(\"demangle\",false);unexportedRuntimeFunction(\"demangleAll\",false);unexportedRuntimeFunction(\"jsStackTrace\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"getEnvStrings\",false);unexportedRuntimeFunction(\"checkWasiClock\",false);unexportedRuntimeFunction(\"writeI53ToI64\",false);unexportedRuntimeFunction(\"writeI53ToI64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToI64Signaling\",false);unexportedRuntimeFunction(\"writeI53ToU64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToU64Signaling\",false);unexportedRuntimeFunction(\"readI53FromI64\",false);unexportedRuntimeFunction(\"readI53FromU64\",false);unexportedRuntimeFunction(\"convertI32PairToI53\",false);unexportedRuntimeFunction(\"convertU32PairToI53\",false);unexportedRuntimeFunction(\"dlopenMissingError\",false);unexportedRuntimeFunction(\"setImmediateWrapped\",false);unexportedRuntimeFunction(\"clearImmediateWrapped\",false);unexportedRuntimeFunction(\"polyfillSetImmediate\",false);unexportedRuntimeFunction(\"uncaughtExceptionCount\",false);unexportedRuntimeFunction(\"exceptionLast\",false);unexportedRuntimeFunction(\"exceptionCaught\",false);unexportedRuntimeFunction(\"ExceptionInfo\",false);unexportedRuntimeFunction(\"exception_addRef\",false);unexportedRuntimeFunction(\"exception_decRef\",false);unexportedRuntimeFunction(\"Browser\",false);unexportedRuntimeFunction(\"setMainLoop\",false);unexportedRuntimeFunction(\"wget\",false);unexportedRuntimeFunction(\"FS\",false);unexportedRuntimeFunction(\"MEMFS\",false);unexportedRuntimeFunction(\"TTY\",false);unexportedRuntimeFunction(\"PIPEFS\",false);unexportedRuntimeFunction(\"SOCKFS\",false);unexportedRuntimeFunction(\"_setNetworkCallback\",false);unexportedRuntimeFunction(\"tempFixedLengthArray\",false);unexportedRuntimeFunction(\"miniTempWebGLFloatBuffers\",false);unexportedRuntimeFunction(\"heapObjectForWebGLType\",false);unexportedRuntimeFunction(\"heapAccessShiftForWebGLHeap\",false);unexportedRuntimeFunction(\"GL\",false);unexportedRuntimeFunction(\"emscriptenWebGLGet\",false);unexportedRuntimeFunction(\"computeUnpackAlignedImageSize\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetTexPixelData\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetUniform\",false);unexportedRuntimeFunction(\"webglGetUniformLocation\",false);unexportedRuntimeFunction(\"webglPrepareUniformLocationsBeforeFirstUse\",false);unexportedRuntimeFunction(\"webglGetLeftBracePos\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetVertexAttrib\",false);unexportedRuntimeFunction(\"writeGLArray\",false);unexportedRuntimeFunction(\"AL\",false);unexportedRuntimeFunction(\"SDL_unicode\",false);unexportedRuntimeFunction(\"SDL_ttfContext\",false);unexportedRuntimeFunction(\"SDL_audio\",false);unexportedRuntimeFunction(\"SDL\",false);unexportedRuntimeFunction(\"SDL_gfx\",false);unexportedRuntimeFunction(\"GLUT\",false);unexportedRuntimeFunction(\"EGL\",false);unexportedRuntimeFunction(\"GLFW_Window\",false);unexportedRuntimeFunction(\"GLFW\",false);unexportedRuntimeFunction(\"GLEW\",false);unexportedRuntimeFunction(\"IDBStore\",false);unexportedRuntimeFunction(\"runAndAbortIfError\",false);unexportedRuntimeFunction(\"InternalError\",false);unexportedRuntimeFunction(\"BindingError\",false);unexportedRuntimeFunction(\"UnboundTypeError\",false);unexportedRuntimeFunction(\"PureVirtualError\",false);unexportedRuntimeFunction(\"init_embind\",false);unexportedRuntimeFunction(\"throwInternalError\",false);unexportedRuntimeFunction(\"throwBindingError\",false);unexportedRuntimeFunction(\"throwUnboundTypeError\",false);unexportedRuntimeFunction(\"ensureOverloadTable\",false);unexportedRuntimeFunction(\"exposePublicSymbol\",false);unexportedRuntimeFunction(\"replacePublicSymbol\",false);unexportedRuntimeFunction(\"extendError\",false);unexportedRuntimeFunction(\"createNamedFunction\",false);unexportedRuntimeFunction(\"registeredInstances\",false);unexportedRuntimeFunction(\"getBasestPointer\",false);unexportedRuntimeFunction(\"registerInheritedInstance\",false);unexportedRuntimeFunction(\"unregisterInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstanceCount\",false);unexportedRuntimeFunction(\"getLiveInheritedInstances\",false);unexportedRuntimeFunction(\"registeredTypes\",false);unexportedRuntimeFunction(\"awaitingDependencies\",false);unexportedRuntimeFunction(\"typeDependencies\",false);unexportedRuntimeFunction(\"registeredPointers\",false);unexportedRuntimeFunction(\"registerType\",false);unexportedRuntimeFunction(\"whenDependentTypesAreResolved\",false);unexportedRuntimeFunction(\"embind_charCodes\",false);unexportedRuntimeFunction(\"embind_init_charCodes\",false);unexportedRuntimeFunction(\"readLatin1String\",false);unexportedRuntimeFunction(\"getTypeName\",false);unexportedRuntimeFunction(\"heap32VectorToArray\",false);unexportedRuntimeFunction(\"requireRegisteredType\",false);unexportedRuntimeFunction(\"getShiftFromSize\",false);unexportedRuntimeFunction(\"integerReadValueFromPointer\",false);unexportedRuntimeFunction(\"enumReadValueFromPointer\",false);unexportedRuntimeFunction(\"floatReadValueFromPointer\",false);unexportedRuntimeFunction(\"simpleReadValueFromPointer\",false);unexportedRuntimeFunction(\"runDestructors\",false);unexportedRuntimeFunction(\"new_\",false);unexportedRuntimeFunction(\"craftInvokerFunction\",false);unexportedRuntimeFunction(\"embind__requireFunction\",false);unexportedRuntimeFunction(\"tupleRegistrations\",false);unexportedRuntimeFunction(\"structRegistrations\",false);unexportedRuntimeFunction(\"genericPointerToWireType\",false);unexportedRuntimeFunction(\"constNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"nonConstNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"init_RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer_getPointee\",false);unexportedRuntimeFunction(\"RegisteredPointer_destructor\",false);unexportedRuntimeFunction(\"RegisteredPointer_deleteObject\",false);unexportedRuntimeFunction(\"RegisteredPointer_fromWireType\",false);unexportedRuntimeFunction(\"runDestructor\",false);unexportedRuntimeFunction(\"releaseClassHandle\",false);unexportedRuntimeFunction(\"finalizationRegistry\",false);unexportedRuntimeFunction(\"detachFinalizer_deps\",false);unexportedRuntimeFunction(\"detachFinalizer\",false);unexportedRuntimeFunction(\"attachFinalizer\",false);unexportedRuntimeFunction(\"makeClassHandle\",false);unexportedRuntimeFunction(\"init_ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle_isAliasOf\",false);unexportedRuntimeFunction(\"throwInstanceAlreadyDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_clone\",false);unexportedRuntimeFunction(\"ClassHandle_delete\",false);unexportedRuntimeFunction(\"deletionQueue\",false);unexportedRuntimeFunction(\"ClassHandle_isDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_deleteLater\",false);unexportedRuntimeFunction(\"flushPendingDeletes\",false);unexportedRuntimeFunction(\"delayFunction\",false);unexportedRuntimeFunction(\"setDelayFunction\",false);unexportedRuntimeFunction(\"RegisteredClass\",false);unexportedRuntimeFunction(\"shallowCopyInternalPointer\",false);unexportedRuntimeFunction(\"downcastPointer\",false);unexportedRuntimeFunction(\"upcastPointer\",false);unexportedRuntimeFunction(\"validateThis\",false);unexportedRuntimeFunction(\"char_0\",false);unexportedRuntimeFunction(\"char_9\",false);unexportedRuntimeFunction(\"makeLegalFunctionName\",false);unexportedRuntimeFunction(\"emval_handle_array\",false);unexportedRuntimeFunction(\"emval_free_list\",false);unexportedRuntimeFunction(\"emval_symbols\",false);unexportedRuntimeFunction(\"init_emval\",false);unexportedRuntimeFunction(\"count_emval_handles\",false);unexportedRuntimeFunction(\"get_first_emval\",false);unexportedRuntimeFunction(\"getStringOrSymbol\",false);unexportedRuntimeFunction(\"Emval\",false);unexportedRuntimeFunction(\"emval_newers\",false);unexportedRuntimeFunction(\"craftEmvalAllocator\",false);unexportedRuntimeFunction(\"emval_get_global\",false);unexportedRuntimeFunction(\"emval_methodCallers\",false);unexportedRuntimeFunction(\"emval_registeredMethods\",false);unexportedRuntimeFunction(\"warnOnce\",false);unexportedRuntimeFunction(\"stackSave\",false);unexportedRuntimeFunction(\"stackRestore\",false);unexportedRuntimeFunction(\"stackAlloc\",false);unexportedRuntimeFunction(\"AsciiToString\",false);unexportedRuntimeFunction(\"stringToAscii\",false);unexportedRuntimeFunction(\"UTF16ToString\",false);unexportedRuntimeFunction(\"stringToUTF16\",false);unexportedRuntimeFunction(\"lengthBytesUTF16\",false);unexportedRuntimeFunction(\"UTF32ToString\",false);unexportedRuntimeFunction(\"stringToUTF32\",false);unexportedRuntimeFunction(\"lengthBytesUTF32\",false);unexportedRuntimeFunction(\"allocateUTF8\",false);unexportedRuntimeFunction(\"allocateUTF8OnStack\",false);Module[\"writeStackCookie\"]=writeStackCookie;Module[\"checkStackCookie\"]=checkStackCookie;unexportedRuntimeSymbol(\"ALLOC_NORMAL\",false);unexportedRuntimeSymbol(\"ALLOC_STACK\",false);var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args){args=args||arguments_;if(runDependencies>0){return}stackCheckInit();preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();assert(!Module[\"_main\"],'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]');postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}checkStackCookie()}Module[\"run\"]=run;function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=(x=>{has=true});try{___stdio_exit();[\"stdout\",\"stderr\"].forEach(function(name){var info=FS.analyzePath(\"/dev/\"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true}})}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\")}}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();module.exports=Module;\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\nexport const VERSION = '__VERSION__'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError:'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\n\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import Module from './decoder/decoder';\nimport createWebGL from './utils/webgl';\nimport {WORKER_CMD_TYPE, MEDIA_TYPE, WORKER_SEND_TYPE, ENCODED_VIDEO_TYPE, DEFAULT_PLAYER_OPTIONS} from \"./constant\";\nimport {formatVideoDecoderConfigure, isGreenYUV} from \"./utils\";\n\nif (!Date.now) Date.now = function () {\n return new Date().getTime();\n};\n\nModule.postRun = function () {\n var buffer = [];\n var tempAudioBuffer = [];\n var wcsVideoDecoder = {};\n if (\"VideoEncoder\" in self) {\n wcsVideoDecoder = {\n hasInit: false,\n isEmitInfo: false,\n offscreenCanvas: null,\n offscreenCanvasCtx: null,\n decoder: new VideoDecoder({\n output: function (videoFrame) {\n if (!wcsVideoDecoder.isEmitInfo) {\n decoder.opt.debug && console.log('Jb: [worker] Webcodecs Video Decoder initSize');\n postMessage({\n cmd: WORKER_CMD_TYPE.initVideo,\n w: videoFrame.codedWidth,\n h: videoFrame.codedHeight\n });\n wcsVideoDecoder.isEmitInfo = true;\n wcsVideoDecoder.offscreenCanvas = new OffscreenCanvas(videoFrame.codedWidth, videoFrame.codedHeight);\n wcsVideoDecoder.offscreenCanvasCtx = wcsVideoDecoder.offscreenCanvas.getContext(\"2d\");\n }\n\n wcsVideoDecoder.offscreenCanvasCtx.drawImage(videoFrame, 0, 0, videoFrame.codedWidth, videoFrame.codedHeight);\n let image_bitmap = wcsVideoDecoder.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: decoder.delay,\n ts: 0\n }, [image_bitmap]);\n\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close();\n } else {\n videoFrame.destroy();\n }\n }, 100);\n\n },\n error: function (error) {\n console.error(error);\n }\n }),\n decode: function (payload, ts) {\n const isIFrame = payload[0] >> 4 === 1;\n if (!wcsVideoDecoder.hasInit) {\n if (isIFrame && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n decoder.setVideoCodec(videoCodec);\n const config = formatVideoDecoderConfigure(payload.slice(5));\n wcsVideoDecoder.decoder.configure(config);\n wcsVideoDecoder.hasInit = true;\n }\n } else {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIFrame ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n });\n wcsVideoDecoder.decoder.decode(chunk);\n }\n },\n reset() {\n wcsVideoDecoder.hasInit = false;\n wcsVideoDecoder.isEmitInfo = false;\n wcsVideoDecoder.offscreenCanvas = null;\n wcsVideoDecoder.offscreenCanvasCtx = null;\n }\n };\n }\n\n var decoder = {\n opt: {\n debug: DEFAULT_PLAYER_OPTIONS.debug,\n useOffscreen: DEFAULT_PLAYER_OPTIONS.useOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment,\n videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay\n },\n useOffscreen: function () {\n return decoder.opt.useOffscreen && typeof OffscreenCanvas != 'undefined';\n },\n initAudioPlanar: function (channels, samplerate) {\n postMessage({cmd: WORKER_CMD_TYPE.initAudio, sampleRate: samplerate, channels: channels});\n var outputArray = [];\n var remain = 0;\n this.playAudioPlanar = function (data, len, ts) {\n var frameCount = len;\n var origin = [];\n var start = 0;\n for (var channel = 0; channel < 2; channel++) {\n var fp = Module.HEAPU32[(data >> 2) + channel] >> 2;\n origin[channel] = Module.HEAPF32.subarray(fp, fp + frameCount);\n }\n if (remain) {\n len = 1024 - remain;\n if (frameCount >= len) {\n outputArray[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0].subarray(0, len));\n if (channels == 2) {\n outputArray[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1].subarray(0, len));\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n start = len;\n frameCount -= len;\n } else {\n remain += frameCount;\n tempAudioBuffer[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0]);\n if (channels == 2) {\n tempAudioBuffer[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1]);\n }\n return;\n }\n }\n for (remain = frameCount; remain >= 1024; remain -= 1024) {\n outputArray[0] = origin[0].slice(start, start += 1024);\n if (channels == 2) {\n outputArray[1] = origin[1].slice(start - 1024, start);\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n }\n if (remain) {\n tempAudioBuffer[0] = origin[0].slice(start);\n if (channels == 2) {\n tempAudioBuffer[1] = origin[1].slice(start);\n }\n }\n };\n },\n setVideoCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.videoCode, code});\n },\n setAudioCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.audioCode, code});\n },\n setVideoSize: function (w, h) {\n postMessage({cmd: WORKER_CMD_TYPE.initVideo, w: w, h: h});\n var size = w * h;\n var qsize = size >> 2;\n if (decoder.useOffscreen()) {\n this.offscreenCanvas = new OffscreenCanvas(w, h);\n this.offscreenCanvasGL = this.offscreenCanvas.getContext(\"webgl\");\n this.webglObj = createWebGL(this.offscreenCanvasGL, decoder.opt.openWebglAlignment);\n this.draw = function (ts, y, u, v) {\n const yData = Module.HEAPU8.subarray(y, y + size);\n const uData = Module.HEAPU8.subarray(u, u + qsize);\n const vData = Module.HEAPU8.subarray(v, v + (qsize));\n // if (isGreenYUV(Uint8Array.from(yData))) {\n // decoder.opt.debug && console.log('Jb: [worker]: draw offscreenCanvas is green yuv');\n // return\n // }\n\n this.webglObj.render(w, h, yData, uData, vData);\n let image_bitmap = this.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: this.delay,\n ts\n }, [image_bitmap]);\n };\n } else {\n this.draw = function (ts, y, u, v) {\n const yData = Uint8Array.from(Module.HEAPU8.subarray(y, y + size));\n const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize));\n const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize)));\n // if (isGreenYUV(yData)) {\n // decoder.opt.debug && console.log('Jb: [worker]: draw is green yuv');\n // return\n // }\n const outputArray = [yData, uData, vData];\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n output: outputArray,\n delay: this.delay,\n ts\n }, outputArray.map(x => x.buffer));\n };\n }\n },\n getDelay: function (timestamp) {\n if (!timestamp) {\n return -1;\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp;\n this.startTimestamp = Date.now();\n this.delay = -1;\n } else {\n\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay;\n },\n resetDelay: function () {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n },\n\n init: function () {\n decoder.opt.debug && console.log('Jb: [worker] init');\n const _doDecode = (data) => {\n // decoder.opt.debug && console.log('Jb: [worker]: _doDecode');\n if (decoder.opt.useWCS && decoder.useOffscreen() && data.type === MEDIA_TYPE.video && wcsVideoDecoder.decode) {\n wcsVideoDecoder.decode(data.payload, data.ts);\n } else {\n // decoder.opt.debug && console.log('Jb: [worker]: _doDecode wasm');\n data.decoder.decode(data.payload, data.ts);\n }\n };\n const loop = () => {\n if (buffer.length) {\n if (this.dropping) {\n // // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n while (!data.isIFrame && buffer.length) {\n // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n }\n if (data.isIFrame) {\n this.dropping = false;\n _doDecode(data);\n }\n } else {\n var data = buffer[0];\n if (this.getDelay(data.ts) === -1) {\n // decoder.opt.debug && console.log('Jb: [worker]: common dumex delay is -1');\n buffer.shift();\n _doDecode(data);\n } else if (this.delay > decoder.opt.videoBuffer + decoder.opt.videoBufferDelay) {\n // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true;\n } else {\n while (buffer.length) {\n data = buffer[0];\n if (this.getDelay(data.ts) > decoder.opt.videoBuffer) {\n // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay}, decode`);\n buffer.shift();\n _doDecode(data);\n } else {\n // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`);\n break;\n }\n }\n }\n }\n }\n else {\n }\n };\n this.stopId = setInterval(loop, 10);\n },\n close: function () {\n decoder.opt.debug && console.log('Jb: [worker]: close');\n clearInterval(this.stopId);\n this.stopId = null;\n audioDecoder.clear && audioDecoder.clear();\n videoDecoder.clear && videoDecoder.clear();\n wcsVideoDecoder.reset && wcsVideoDecoder.reset();\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n\n if (this.webglObj) {\n this.webglObj.destroy();\n this.offscreenCanvas = null;\n this.offscreenCanvasGL = null;\n this.offscreenCanvasCtx = null;\n }\n buffer = [];\n tempAudioBuffer = [];\n delete this.playAudioPlanar;\n delete this.draw;\n },\n pushBuffer: function (bufferData, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: audioDecoder,\n type: MEDIA_TYPE.audio,\n });\n } else if (options.type === MEDIA_TYPE.video) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: videoDecoder,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n });\n }\n }\n };\n var audioDecoder = new Module.AudioDecoder(decoder);\n var videoDecoder = new Module.VideoDecoder(decoder);\n postMessage({cmd: WORKER_SEND_TYPE.init});\n self.onmessage = function (event) {\n var msg = event.data;\n switch (msg.cmd) {\n case WORKER_SEND_TYPE.init:\n try {\n decoder.opt = Object.assign(decoder.opt, JSON.parse(msg.opt));\n } catch (e) {\n\n }\n audioDecoder.sample_rate = msg.sampleRate;\n decoder.init();\n break;\n case WORKER_SEND_TYPE.decode:\n decoder.pushBuffer(msg.buffer, msg.options);\n break;\n case WORKER_SEND_TYPE.audioDecode:\n audioDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.videoDecode:\n videoDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.close:\n decoder.close();\n break;\n case WORKER_SEND_TYPE.updateConfig:\n decoder.opt[msg.key] = msg.value;\n break;\n }\n };\n};\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","Object","assign","thisProgram","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","process","versions","node","ENVIRONMENT_IS_SHELL","Error","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","require","require$$0","dirname","__dirname","require$$1","shell_read","filename","binary","readFileSync","undefined","ret","buffer","Uint8Array","assert","onload","onerror","readFile","err","data","length","replace","arguments_","slice","module","ex","ExitStatus","reason","read","f","readbuffer","setTimeout","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","status","out","bind","checkIncomingModuleAPI","legacyModuleProp","quit_","warnOnce","shown","prop","newName","getOwnPropertyDescriptor","defineProperty","configurable","get","abort","ignoredModuleProp","unexportedMessage","sym","isFSSybol","msg","unexportedRuntimeSymbol","unexportedRuntimeFunction","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","toString","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF16Decoder","UTF16ToString","maxIdx","HEAPU16","codeUnit","HEAP16","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","HEAP32","stringToUTF32","trailSurrogate","lengthBytesUTF32","allocateUTF8","size","_malloc","HEAP8","writeAsciiToMemory","dontAddNull","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","TOTAL_STACK","INITIAL_MEMORY","prototype","set","wasmTable","writeStackCookie","max","_emscripten_stack_get_end","checkStackCookie","cookie1","cookie2","h16","h8","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runtimeInitialized","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","Math","imul","fround","clz32","trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","callback","what","e","RuntimeError","dataURIPrefix","isDataURI","startsWith","isFileURI","createExportWrapper","name","fixedasm","displayName","asm","apply","arguments","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","trueModule","receiveInstantiationResult","result","instantiateArrayBuffer","receiver","instantiate","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","getWasmTableEntry","demangle","demangleAll","regex","x","y","funcPtr","jsStackTrace","stack","setErrNo","value","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","paths","Array","call","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","crypto_module","require$$2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","min","samePartsLength","outputParts","push","concat","TTY","ttys","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","BUFSIZE","Buffer","alloc","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","val","default_tty1_ops","zeroMemory","address","fill","alignMemory","alignment","ceil","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","key","hasOwnProperty","newname","oldpath","position","canOwn","ArrayBuffer","whence","prot","flags","allocated","byteOffset","mmapFlags","asyncLoad","noRunDep","arrayBuffer","event","ERRNO_MESSAGES","ERRNO_CODES","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","object","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","encoding","writeFile","actualNumBytes","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","code","writable","constructor","staticInit","quit","___stdio_exit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","obj","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","Number","getResponseHeader","header","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","defineProperties","fn","forceLoadLazyFile","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","absolutePath","createFolder","createLink","joinPath","standardizePath","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","___syscall_fcntl64","newStream","___syscall_openat","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","createNamedFunction","body","Function","extendError","baseErrorType","errorName","errorClass","BindingError","throwBindingError","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","destructors","o","pointer","destructorFunction","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","rv","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","actualType","getActualType","registeredPointerRecord","toType","isConst","constPointerType","pointerType","dp","FinalizationRegistry","leakWarning","cls","captureStackTrace","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","rawConstructor","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","substring","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","map","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","array","runDestructors","del","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","classType","argTypes","craftInvokerFunction","new_","argumentList","dummy","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","Symbol","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","v","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_std_string","stdStringIsUTF8","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","getLength","valueIsOfTypeString","Uint8ClampedArray","charCode","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_void","isVoid","__emscripten_date_now","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","__gmtime_js","time","tmPtr","date","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","__localtime_js","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","getTimezoneOffset","summerOffset","winterOffset","dst","__mktime_js","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","_tzset_impl","timezone","daylight","tzname","currentYear","winter","summer","stdTimezoneOffset","extractZone","match","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","__tzset_js","called","_abort","reallyNegative","Infinity","convertI32PairToI53","lo","hi","convertU32PairToI53","reSign","bits","half","pow","unSign","formatString","format","textIndex","argIndex","prepVararg","getNextArg","currArg","startTextIndex","flagAlwaysSigned","flagLeftAlign","flagAlternative","flagZeroPad","flagPadSign","flagsLoop","width","precisionSet","precision","precisionChr","argSize","nextNext","argText","limit","currAbsArg","prefix","parseInt","toUpperCase","chr","isNaN","isFinite","isGeneral","effectivePrecision","exponent","toExponential","test","toFixed","argLength","_strlen","traverseStack","callee","funcname","first","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","RegExp","firefoxRe","chromeRe","line","symbolName","lineno","column","haveSourceMap","originalPositionFor","source","_emscripten_log_js","debug","_emscripten_log","_emscripten_get_heap_max","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","navigator","languages","env","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","_fd_read","pnum","num","_fd_seek","offset_low","offset_high","newOffset","HIGH_OFFSET","DOUBLE_LIMIT","_fd_write","_setTempRet0","readMode","writeMode","stringy","u8array","numBytesWritten","_emscripten_stack_init","calledRun","runCaller","run","stackCheckInit","doRun","gl","openWebglAlignment","vertexShaderScript","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","render","w","h","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","initVideo","playAudio","initAudio","kBps","audioCode","videoCode","wasmError","MEDIA_TYPE","video","WORKER_SEND_TYPE","audioDecode","videoDecode","updateConfig","ENCODED_VIDEO_TYPE","delta","of","Instance","formatVideoDecoderConfigure","avcC","codecArray","codecString","j","codec","description","tempAudioBuffer","wcsVideoDecoder","hasInit","isEmitInfo","offscreenCanvas","offscreenCanvasCtx","VideoDecoder","videoFrame","opt","codedWidth","codedHeight","OffscreenCanvas","getContext","drawImage","image_bitmap","transferToImageBitmap","delay","ts","payload","isIFrame","videoCodec","setVideoCodec","config","configure","chunk","EncodedVideoChunk","reset","initAudioPlanar","channels","samplerate","sampleRate","outputArray","remain","playAudioPlanar","frameCount","origin","channel","setAudioCodec","setVideoSize","qsize","offscreenCanvasGL","webglObj","createWebGL","draw","yData","uData","vData","getDelay","firstTimestamp","startTimestamp","localTimestamp","timeTimestamp","resetDelay","_doDecode","loop","dropping","stopId","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file diff --git a/demo/public/dist.zip b/demo/public/dist.zip index e5aa6ed2e1780f942fcf3ae4a3cd83b5fc20ad5b..a0f4180a420aaf82544420ffcdf16337f8bf8614 100644 GIT binary patch delta 113426 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 z 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 bYhjbOs9~@WVL@O)q`^Tz+{j?Q{P_O>p?Mpy delta 113844 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 {\n if (master._opt && master._opt.debug) {\n console.log(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.warn(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n console.error(`Jessibuca: [${name}]`, ...args);\n };\n }\n}\n","export default class Events {\n constructor(master) {\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.master = master;\n }\n\n proxy(target, name, callback, option = {}) {\n if (!target) {\n return;\n }\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option));\n }\n target.addEventListener(name, callback, option);\n const destroy = () => target.removeEventListener(name, callback, option);\n this.destroys.push(destroy);\n return destroy;\n }\n\n destroy() {\n this.master.debug && this.master.debug.log(`Events`, 'destroy');\n this.destroys.forEach(event => event());\n }\n}\n","export default (player) => {\n Object.defineProperty(player, 'rect', {\n get: () => {\n const clientRect = player.$container.getBoundingClientRect()\n clientRect.width = Math.max(clientRect.width, player.$container.clientWidth);\n clientRect.height = Math.max(clientRect.height, player.$container.clientHeight);\n return clientRect;\n },\n });\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(key => {\n Object.defineProperty(player, key, {\n get: () => {\n return player.rect[key];\n },\n });\n });\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\n\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {getTarget, isMobile, setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = (e) => {\n if (getTarget(e) === player.$container) {\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n\n // 如果不是fullscreen,则触发下 resize 方法\n if (!player.fullscreen) {\n player.resize();\n } else {\n if (player._opt.useMSE) {\n player.resize();\n }\n }\n }\n };\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n //\n player.on(EVENTS.decoderWorkerInit, () => {\n player.debug.log('player', 'has loaded');\n player.loaded = true;\n })\n\n //\n player.on(EVENTS.play, () => {\n player.loading = false;\n })\n\n //\n player.on(EVENTS.fullscreen, (value) => {\n if (value) {\n try {\n screenfull.request(player.$container).then(() => {\n\n }).catch((e) => {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n });\n\n } catch (e) {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n }\n } else {\n try {\n screenfull.exit().then(() => {\n if (player.webFullscreen) {\n player.webFullscreen = false;\n }\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n if (isMobile()) {\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('jessibuca-fullscreen-web')\n } else {\n player.$container.classList.remove('jessibuca-fullscreen-web')\n }\n //\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n })\n }\n\n\n //\n player.on(EVENTS.resize, () => {\n player.video && player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n const stringList = [\n EVENTS.stats,\n EVENTS.playToRenderTimes,\n EVENTS.audioInfo,\n EVENTS.videoInfo\n ]\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\n }\n\n if (stringList.includes(key)) {\n value = JSON.stringify(value)\n }\n\n player.debug.log('player events', EVENTS[key], value);\n })\n })\n\n Object.keys(EVENTS_ERROR).forEach((key) => {\n player.on(EVENTS_ERROR[key], (value) => {\n player.debug.log('player event error', EVENTS_ERROR[key], value);\n })\n })\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({fn, ctx});\n return this;\n }\n\n once(name, fn, ctx) {\n const self = this;\n\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {});\n\n if (!name) {\n Object.keys(e).forEach((key) => {\n delete e[key];\n })\n delete this.e\n return;\n }\n\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n return this;\n }\n}\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor() {\n super();\n this.init = false;\n }\n\n resetInit() {\n this.init = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n }\n destroy() {\n this.resetInit();\n this.player.$container.removeChild(this.$videoElement);\n this.off();\n }\n\n //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[data.encTypeCode];\n this.videoInfo.encTypeCode = data.encTypeCode;\n }\n\n if (data.width) {\n this.videoInfo.width = data.width;\n }\n\n if (data.height) {\n this.videoInfo.height = data.height;\n }\n\n // video 基本信息\n if (this.videoInfo.encType && this.videoInfo.height && this.videoInfo.width && !this.init) {\n this.player.emit(EVENTS.videoInfo, this.videoInfo);\n this.init = true;\n }\n }\n\n play() {\n\n }\n\n pause() {\n\n }\n\n clearView() {\n\n }\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom(blob, opts) {\n if (typeof opts === 'undefined') opts = {autoBom: false}\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = {autoBom: !opts}\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type})\n }\n return blob\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {\n }\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs() { /* noop */\n }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n // Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561)\n var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () {\n URL.revokeObjectURL(a.href)\n }, 4E4) // 40s\n setTimeout(function () {\n click(a)\n }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () {\n click(a)\n })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url)\n }, 4E4) // 40s\n }\n }\n)\n\n\nexport default saveAs\n","import Emitter from \"../utils/emitter\";\nimport {\n closeVideoFrame,\n createContextGL,\n createEmptyImageBitmap,\n dataURLToFile,\n downloadImg,\n isMobile,\n now,\n supportOffscreen\n} from \"../utils\";\nimport createWebGL from \"../utils/webgl\";\nimport {CANVAS_RENDER_TYPE, CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class CanvasVideoLoader extends CommonLoader {\n\n constructor(player) {\n super()\n this.player = player;\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.style.position = \"absolute\";\n $canvasElement.style.top = 0;\n $canvasElement.style.left = 0;\n this.$videoElement = $canvasElement;\n player.$container.appendChild(this.$videoElement);\n\n this.context2D = null;\n this.contextGl = null;\n this.contextGlRender = null;\n this.contextGlDestroy = null;\n this.bitmaprenderer = null;\n this.renderType = null;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n //\n this._initCanvasRender();\n this.player.debug.log('CanvasVideo', 'init');\n }\n\n async destroy() {\n super.destroy();\n if (this.contextGl) {\n this.contextGl = null;\n }\n if (this.context2D) {\n this.context2D = null;\n }\n if (this.contextGlRender) {\n this.contextGlDestroy && this.contextGlDestroy();\n this.contextGlDestroy = null;\n this.contextGlRender = null;\n }\n if (this.bitmaprenderer) {\n this.bitmaprenderer = null;\n }\n\n this.renderType = null;\n\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n if(this.contextGl){\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\n }\n else {\n this.player.debug.error(`CanvasVideoLoader`, 'init webgl fail');\n }\n }\n\n _initContext2D() {\n this.context2D = this.$videoElement.getContext('2d');\n }\n\n\n // 渲染类型\n _initCanvasRender() {\n if (this.player._opt.useWCS && !this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.webcodecs;\n this._initContext2D();\n } else if (this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.offscreen;\n this._bindOffscreen();\n } else {\n this.renderType = CANVAS_RENDER_TYPE.webgl;\n this._initContextGl();\n }\n }\n\n _supportOffscreen() {\n return supportOffscreen(this.$videoElement) && this.player._opt.useOffscreen;\n }\n\n //\n _bindOffscreen() {\n this.bitmaprenderer = this.$videoElement.getContext('bitmaprenderer');\n }\n\n initCanvasViewSize() {\n this.$videoElement.width = this.videoInfo.width;\n this.$videoElement.height = this.videoInfo.height;\n this.resize();\n }\n\n //\n render(msg) {\n this.player.videoTimestamp = msg.ts;\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n this.bitmaprenderer.transferFromImageBitmap(msg.buffer);\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n // can use createImageBitmap in wexin\n this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\n closeVideoFrame(msg.videoFrame);\n break;\n }\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const dataURL = this.$videoElement.toDataURL(formatType[format] || formatType.png, encoderOptions);\n\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename);\n }\n }\n\n }\n\n //\n clearView() {\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n createEmptyImageBitmap(this.$videoElement.width, this.$videoElement.height).then((imageBitMap) => {\n this.bitmaprenderer.transferFromImageBitmap(imageBitMap);\n })\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n this.context2D.clearRect(0, 0, this.$videoElement.width, this.$videoElement.height)\n break;\n }\n }\n\n resize() {\n this.player.debug.log('canvasVideo', 'resize');\n const option = this.player._opt;\n let width = this.player.width;\n let height = this.player.height;\n if (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n const rotate = option.rotate;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n if (rotate === 270 || rotate === 90) {\n resizeWidth = this.$videoElement.height;\n resizeHeight = this.$videoElement.width;\n }\n\n const wScale = width / resizeWidth;\n const hScale = height / resizeHeight;\n\n let scale = wScale > hScale ? hScale : wScale;\n //\n if (!option.isResize) {\n if (wScale !== hScale) {\n scale = wScale + ',' + hScale;\n }\n }\n //\n if (option.isFullResize) {\n scale = wScale > hScale ? wScale : hScale;\n }\n let transform = \"scale(\" + scale + \")\";\n\n if (rotate) {\n transform += ' rotate(' + rotate + 'deg)'\n }\n\n this.$videoElement.style.transform = transform;\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport {dataURLToFile, downloadImg, getBrowser, isAndroid, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n const $canvasElement = document.createElement('canvas');\n $videoElement.muted = true;\n $videoElement.disablePictureInPicture = true;\n if (isAndroid()) {\n // default no poster\n $videoElement.poster = 'noposter';\n }\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n this._delayPlay = false;\n player.$container.appendChild($videoElement);\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n const _opt = this.player._opt;\n if (_opt.useWCS && _opt.wcsUseVideoRender) {\n this.trackGenerator = new MediaStreamTrackGenerator({kind: 'video'});\n $videoElement.srcObject = new MediaStream([this.trackGenerator]);\n this.vwriter = this.trackGenerator.writable.getWriter();\n }\n this.$videoElement = $videoElement;\n this.$canvasElement = $canvasElement;\n this.canvasContext = $canvasElement.getContext('2d');\n this.fixChromeVideoFlashBug();\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', `canplay`);\n if (this._delayPlay) {\n this.player.debug.log('Video', `canplay and _delayPlay is true and next play()`);\n this._play();\n }\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n // this.player.emit(EVENTS.videoWaiting);\n this.player.debug.log('Video', 'waiting');\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n const timeStamp = parseInt(event.timeStamp, 10);\n this.player.emit(EVENTS.timeUpdate, timeStamp)\n // check is pause;\n if (!this.isPlaying() && this.init) {\n this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`);\n this.$videoElement.play();\n }\n })\n\n this.player.debug.log('Video', 'init');\n }\n\n async destroy() {\n super.destroy();\n this.$canvasElement = null;\n this.canvasContext = null;\n if (this.$videoElement) {\n this.$videoElement.pause();\n this.$videoElement.currentTime = 0;\n this.$videoElement.src = ''\n this.$videoElement.removeAttribute('src');\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator.stop();\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n await this.vwriter.close();\n this.vwriter = null;\n }\n this.player.debug.log('Video', 'destroy');\n }\n\n fixChromeVideoFlashBug() {\n const browser = getBrowser();\n const type = browser.type.toLowerCase();\n if (type === 'chrome' || type === 'edge') {\n const $container = this.player.$container;\n $container.style.backdropFilter = 'blur(0px)';\n $container.style.translateZ = '0';\n }\n }\n\n play() {\n if (this.$videoElement) {\n const readyState = this._getVideoReadyState();\n this.player.debug.log('Video', `play and readyState: ${readyState}`);\n if (readyState === 0) {\n this.player.debug.warn('Video', 'readyState is 0 and set _delayPlay to true');\n this._delayPlay = true;\n return;\n }\n this._play();\n }\n }\n\n _getVideoReadyState() {\n let result = 0;\n if (this.$videoElement) {\n result = this.$videoElement.readyState;\n }\n return result;\n }\n\n _play() {\n this.$videoElement && this.$videoElement.play().then(() => {\n this._delayPlay = false;\n this.player.debug.log('Video', '_play success');\n setTimeout(() => {\n if (!this.isPlaying()) {\n this.player.debug.warn('Video', `play failed and retry play`)\n this._play();\n }\n }, 100)\n\n }).catch((e) => {\n this.player.debug.error('Video', '_play error', e);\n })\n }\n\n pause(isNow) {\n // 预防\n // https://developer.chrome.com/blog/play-request-was-interrupted/\n // http://alonesuperman.com/?p=23\n if (isNow) {\n this.$videoElement && this.$videoElement.pause();\n } else {\n setTimeout(() => {\n this.$videoElement && this.$videoElement.pause();\n }, 100)\n }\n }\n\n clearView() {\n\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const $video = this.$videoElement;\n let canvas = this.$canvasElement;\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n this.canvasContext.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(formatType[format] || formatType.png, encoderOptions);\n // release memory\n this.canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = 0;\n canvas.height = 0;\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL);\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename)\n }\n }\n\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n //\n render(msg) {\n if (this.vwriter) {\n this.vwriter.write(msg.videoFrame);\n }\n }\n\n resize() {\n let width = this.player.width;\n let height = this.player.height;\n const option = this.player._opt;\n const rotate = option.rotate;\n if (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n\n this.$videoElement.width = width;\n this.$videoElement.height = height;\n\n if (rotate === 270 || rotate === 90) {\n this.$videoElement.width = height;\n this.$videoElement.height = width;\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n let objectFill = 'contain';\n\n // 默认是true\n // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n\n // 视频画面完全填充canvas区域,画面会被拉伸\n if (!option.isResize) {\n objectFill = 'fill';\n }\n\n // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n if (option.isFullResize) {\n objectFill = 'none';\n }\n this.$videoElement.style.objectFit = objectFill;\n this.$videoElement.style.transform = 'rotate(' + rotate + 'deg)';\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n isPlaying() {\n return this.$videoElement && !this.$videoElement.paused;\n }\n}\n","import CanvasVideoLoader from './canvasLoader';\nimport VideoLoader from \"./videoLoader\";\n\nexport default class Video {\n constructor(player) {\n const Loader = Video.getLoaderFactory(player._opt);\n return new Loader(player);\n }\n\n static getLoaderFactory(opt) {\n if (opt.useMSE || (opt.useWCS && !opt.useOffscreen && opt.wcsUseVideoRender)) {\n return VideoLoader;\n } else {\n return CanvasVideoLoader;\n }\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {AUDIO_ENC_TYPE, AUDIO_SYNC_VIDEO_DIFF, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\nimport {clamp, noop} from \"../utils\";\n\nexport default class AudioContextLoader extends Emitter {\n constructor(player) {\n super();\n this.bufferList = [];\n this.player = player;\n this.scriptNode = null;\n this.hasInitScriptNode = false;\n this.audioContextChannel = null;\n\n this.audioContext = new (window.AudioContext || window.webkitAudioContext)();\n //\n this.gainNode = this.audioContext.createGain();\n // Get an AudioBufferSourceNode.\n // This is the AudioNode to use when we want to play an AudioBuffer\n const source = this.audioContext.createBufferSource();\n // set the buffer in the AudioBufferSourceNode\n source.buffer = this.audioContext.createBuffer(1, 1, 22050);\n // connect the AudioBufferSourceNode to the\n // destination so we can hear the sound\n source.connect(this.audioContext.destination);\n // noteOn as start\n // start the source playing\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n this.audioBufferSourceNode = source;\n //\n this.mediaStreamAudioDestinationNode = this.audioContext.createMediaStreamDestination();\n //\n this.audioEnabled(true);\n // default setting 0\n this.gainNode.gain.value = 0;\n this._prevVolume = null;\n\n this.playing = false;\n //\n this.audioSyncVideoOption = {\n diff: null\n };\n\n\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n this.init = false;\n this.hasAudio = false;\n\n // update\n this.on(EVENTS.videoSyncAudio, (options) => {\n // this.player.debug.log('AudioContext', `videoSyncAudio , audioTimestamp: ${options.audioTimestamp},videoTimestamp: ${options.videoTimestamp},diff:${options.diff}`)\n this.audioSyncVideoOption = options;\n })\n\n this.player.debug.log('AudioContext', 'init');\n }\n\n resetInit() {\n this.init = false;\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n }\n\n\n async destroy() {\n this.closeAudio();\n this.resetInit();\n if(this.audioContext){\n await this.audioContext.close();\n this.audioContext = null;\n }\n\n this.gainNode = null;\n this.hasAudio = false;\n this.playing = false;\n if (this.scriptNode) {\n this.scriptNode.onaudioprocess = noop;\n this.scriptNode = null;\n }\n this.audioBufferSourceNode = null;\n this.mediaStreamAudioDestinationNode = null;\n this.hasInitScriptNode = false;\n this.audioSyncVideoOption = {\n diff: null\n };\n this._prevVolume = null;\n this.off();\n this.player.debug.log('AudioContext', 'destroy');\n }\n\n updateAudioInfo(data) {\n if (data.encTypeCode) {\n this.audioInfo.encType = AUDIO_ENC_TYPE[data.encTypeCode];\n this.audioInfo.encTypeCode = data.encTypeCode;\n }\n\n if (data.channels) {\n this.audioInfo.channels = data.channels;\n }\n\n if (data.sampleRate) {\n this.audioInfo.sampleRate = data.sampleRate;\n }\n\n // audio 基本信息\n if (this.audioInfo.sampleRate && this.audioInfo.channels && this.audioInfo.encType && !this.init) {\n this.player.emit(EVENTS.audioInfo, this.audioInfo);\n this.init = true;\n }\n }\n\n //\n get isPlaying() {\n return this.playing;\n }\n\n get isMute() {\n return this.gainNode.gain.value === 0;\n }\n\n get volume() {\n return this.gainNode.gain.value;\n }\n\n get bufferSize() {\n return this.bufferList.length;\n }\n\n\n initScriptNode() {\n this.playing = true;\n\n if (this.hasInitScriptNode) {\n return;\n }\n const channels = this.audioInfo.channels;\n\n const scriptNode = this.audioContext.createScriptProcessor(1024, 0, channels);\n // tips: if audio isStateSuspended onaudioprocess method not working\n scriptNode.onaudioprocess = (audioProcessingEvent) => {\n const outputBuffer = audioProcessingEvent.outputBuffer;\n\n if (this.bufferList.length && this.playing) {\n // just for wasm\n if (!this.player._opt.useWCS && !this.player._opt.useMSE && this.player._opt.wasmDecodeAudioSyncVideo) {\n // audio > video\n // wait\n if (this.audioSyncVideoOption.diff > AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`)\n // wait\n return;\n }\n // audio < video\n // throw away then chase video\n else if (this.audioSyncVideoOption.diff < -AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`)\n\n //\n let bufferItem = this.bufferList.shift();\n //\n while ((bufferItem.ts - this.player.videoTimestamp < -AUDIO_SYNC_VIDEO_DIFF) && this.bufferList.length > 0) {\n // this.player.debug.warn('AudioContext', `audioSyncVideoOption less than inner ts is:${bufferItem.ts}, videoTimestamp is ${this.player.videoTimestamp},diff:${bufferItem.ts - this.player.videoTimestamp}`)\n bufferItem = this.bufferList.shift();\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n }\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n\n const bufferItem = this.bufferList.shift();\n\n // update audio time stamp\n if (bufferItem && bufferItem.ts) {\n this.player.audioTimestamp = bufferItem.ts;\n }\n\n for (let channel = 0; channel < channels; channel++) {\n const b = bufferItem.buffer[channel]\n const nowBuffering = outputBuffer.getChannelData(channel);\n for (let i = 0; i < 1024; i++) {\n nowBuffering[i] = b[i] || 0\n }\n }\n }\n }\n\n scriptNode.connect(this.gainNode);\n this.scriptNode = scriptNode;\n this.gainNode.connect(this.audioContext.destination);\n this.gainNode.connect(this.mediaStreamAudioDestinationNode);\n this.hasInitScriptNode = true;\n }\n\n mute(flag) {\n if (flag) {\n // if (!this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0);\n this.clear();\n } else {\n // if (this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0.5);\n }\n }\n\n setVolume(volume) {\n volume = parseFloat(volume).toFixed(2);\n if (isNaN(volume)) {\n return;\n }\n this.audioEnabled(true);\n volume = clamp(volume, 0, 1);\n if (this._prevVolume === null) {\n this.player.emit(EVENTS.mute, volume === 0);\n } else {\n if (this._prevVolume === 0 && volume > 0) {\n this.player.emit(EVENTS.mute, false);\n } else if (this._prevVolume > 0 && volume === 0) {\n this.player.emit(EVENTS.mute, true);\n }\n }\n this.gainNode.gain.value = volume;\n this.gainNode.gain.setValueAtTime(volume, this.audioContext.currentTime);\n this.player.emit(EVENTS.volumechange, this.player.volume);\n this.player.emit(EVENTS.volume, this.player.volume); // outer\n // save last volume\n this._prevVolume = volume;\n }\n\n closeAudio() {\n if (this.hasInitScriptNode) {\n this.scriptNode && this.scriptNode.disconnect(this.gainNode);\n this.gainNode && this.gainNode.disconnect(this.audioContext.destination);\n this.gainNode && this.gainNode.disconnect(this.mediaStreamAudioDestinationNode);\n }\n this.clear();\n }\n\n // 是否播放。。。\n audioEnabled(flag) {\n if (flag) {\n if (this.audioContext.state === 'suspended') {\n // resume\n this.audioContext.resume();\n }\n } else {\n if (this.audioContext.state === 'running') {\n // suspend\n this.audioContext.suspend();\n }\n }\n }\n\n isStateRunning() {\n return this.audioContext.state === 'running';\n }\n\n isStateSuspended() {\n return this.audioContext.state === 'suspended';\n }\n\n clear() {\n this.bufferList = [];\n }\n\n play(buffer, ts) {\n // if is mute\n if (this.isMute) {\n return;\n }\n\n this.hasAudio = true;\n\n this.bufferList.push({\n buffer,\n ts\n });\n\n if (this.bufferList.length > 20) {\n this.player.debug.warn('AudioContext', `bufferList is large: ${this.bufferList.length}`)\n\n // out of memory\n if (this.bufferList.length > 50) {\n this.bufferList.shift();\n }\n }\n // this.player.debug.log('AudioContext', `bufferList is ${this.bufferList.length}`)\n }\n\n pause() {\n this.audioSyncVideoOption = {\n diff: null\n };\n this.playing = false;\n this.clear();\n }\n\n resume() {\n this.playing = true;\n }\n\n\n}\n","import AudioContextLoader from \"./audioContextLoader\";\n\nexport default class Audio {\n constructor(player) {\n const Loader = Audio.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return AudioContextLoader;\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FETCH_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class FetchLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.playing = false;\n\n this.abortController = new AbortController();\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n player.debug.log('FetchStream', 'init');\n }\n\n async destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options = {}) {\n const {demux} = this.player;\n this.player.debug.log('FetchStream', 'fetchStream', url, JSON.stringify(options));\n this.player._times.streamStart = now();\n const fetchOptions = Object.assign({\n signal: this.abortController.signal,\n }, {\n headers: options.headers || {}\n });\n fetch(url, fetchOptions).then((res) => {\n const reader = res.body.getReader();\n this.emit(EVENTS.streamSuccess);\n const fetchNext = () => {\n reader.read().then(({done, value}) => {\n if (done) {\n demux.close();\n } else {\n this.streamRate && this.streamRate(value.byteLength);\n demux.dispatch(value);\n fetchNext();\n }\n }\n ).catch((e) => {\n demux.close();\n const errorString = e.toString();\n // aborted a request 。\n if (errorString.indexOf(FETCH_ERROR.abortError1) !== -1) {\n return\n }\n\n if (errorString.indexOf(FETCH_ERROR.abortError2) !== -1) {\n return;\n }\n\n if (e.name === FETCH_ERROR.abort) {\n return;\n }\n\n\n this.abort();\n\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n fetchNext();\n }).catch((e) => {\n if (e.name === 'AbortError') {\n return;\n }\n demux.close();\n this.abort();\n this.emit(EVENTS_ERROR.fetchError, e)\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n\n abort() {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null\n }\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, WEBSOCKET_STATUS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class WebsocketLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.socket = null;\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.wsUrl = null;\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n\n player.debug.log('WebsocketLoader', 'init');\n }\n\n async destroy() {\n if (this.socket) {\n this.socket.close(1000, 'Client disconnecting');\n this.socket = null;\n }\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.streamRate = null;\n this.wsUrl = null;\n this.off();\n this.player.debug.log('websocketLoader', 'destroy');\n }\n\n _createWebSocket() {\n const player = this.player;\n const {\n debug,\n events: {proxy},\n demux,\n } = player;\n\n this.socket = new WebSocket(this.wsUrl);\n this.socket.binaryType = 'arraybuffer';\n proxy(this.socket, 'open', () => {\n this.emit(EVENTS.streamSuccess);\n debug.log('websocketLoader', 'socket open');\n this.socketStatus = WEBSOCKET_STATUS.open;\n });\n\n proxy(this.socket, 'message', event => {\n this.streamRate && this.streamRate(event.data.byteLength);\n this._handleMessage(event.data);\n });\n\n\n proxy(this.socket, 'close', () => {\n debug.log('websocketLoader', 'socket close');\n this.emit(EVENTS.streamEnd);\n this.socketStatus = WEBSOCKET_STATUS.close;\n });\n\n proxy(this.socket, 'error', error => {\n debug.log('websocketLoader', 'socket error');\n this.emit(EVENTS_ERROR.websocketError, error);\n this.player.emit(EVENTS.error, EVENTS_ERROR.websocketError);\n this.socketStatus = WEBSOCKET_STATUS.error;\n demux.close();\n debug.log('websocketLoader', `socket error:`, error);\n });\n }\n\n //\n _handleMessage(message) {\n const {demux} = this.player;\n if (!demux) {\n this.player.debug.warn('websocketLoader', 'websocket handle message demux is null');\n return;\n }\n demux.dispatch(message);\n }\n\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options) {\n this.player._times.streamStart = now();\n this.wsUrl = url;\n this._createWebSocket();\n }\n\n\n}\n","import FetchLoader from \"./fetchLoader\";\nimport WebsocketLoader from \"./websocketLoader\";\nimport {PLAYER_PLAY_PROTOCOL} from \"../constant\";\n\nexport default class Stream {\n constructor(player) {\n const Loader = Stream.getLoaderFactory(player._opt.protocol);\n return new Loader(player);\n }\n\n static getLoaderFactory(protocol) {\n if (protocol === PLAYER_PLAY_PROTOCOL.fetch) {\n return FetchLoader;\n } else if (protocol === PLAYER_PLAY_PROTOCOL.websocket) {\n return WebsocketLoader;\n }\n }\n}\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","import {downloadRecord, now} from \"../utils\";\nimport saveAs from \"../utils/file-save\";\nimport RecordRTC from 'recordrtc';\nimport {EVENTS, FILE_SUFFIX} from \"../constant\";\nimport Emitter from \"../utils/emitter\";\n\nexport default class RecordRTCLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.fileName = '';\n this.fileType = player._opt.recordType || FILE_SUFFIX.webm;\n this.isRecording = false;\n this.recordingTimestamp = 0;\n this.recordingInterval = null;\n player.debug.log('Recorder', 'init');\n }\n\n destroy() {\n this._reset();\n this.player.debug.log('Recorder', 'destroy');\n }\n\n setFileName(fileName, fileType) {\n this.fileName = fileName;\n\n if (FILE_SUFFIX.mp4 === fileType || FILE_SUFFIX.webm === fileType) {\n this.fileType = fileType;\n }\n }\n\n get recording() {\n return this.isRecording;\n }\n\n get recordTime() {\n return this.recordingTimestamp;\n }\n\n startRecord() {\n const debug = this.player.debug;\n const options = {\n type: 'video',\n mimeType: 'video/webm;codecs=h264',\n onTimeStamp: (timestamp) => {\n debug.log('Recorder', 'record timestamp :' + timestamp);\n },\n disableLogs: !this.player._opt.debug\n }\n\n try {\n const stream = this.player.video.$videoElement.captureStream(25);\n if (this.player.audio && this.player.audio.mediaStreamAudioDestinationNode &&\n this.player.audio.mediaStreamAudioDestinationNode.stream &&\n !this.player.audio.isStateSuspended() &&\n this.player.audio.hasAudio && this.player._opt.hasAudio) {\n const audioStream = this.player.audio.mediaStreamAudioDestinationNode.stream;\n if (audioStream.getAudioTracks().length > 0) {\n const audioTrack = audioStream.getAudioTracks()[0];\n if (audioTrack && audioTrack.enabled) {\n stream.addTrack(audioTrack);\n }\n }\n }\n this.recorder = RecordRTC(stream, options);\n } catch (e) {\n debug.error('Recorder', 'startRecord error', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.player.emit(EVENTS.recording, true);\n this.recorder.startRecording();\n debug.log('Recorder', 'start recording');\n this.player.emit(EVENTS.recordStart);\n this.recordingInterval = window.setInterval(() => {\n this.recordingTimestamp += 1;\n this.player.emit(EVENTS.recordingTimestamp, this.recordingTimestamp);\n }, 1000);\n }\n }\n\n stopRecordAndSave() {\n if (!this.recorder || !this.isRecording) {\n return;\n }\n this.recorder.stopRecording(() => {\n this.player.debug.log('Recorder', 'stop recording');\n this.player.emit(EVENTS.recordEnd)\n const fileName = (this.fileName || now()) + '.' + (this.fileType || FILE_SUFFIX.webm)\n saveAs(this.recorder.getBlob(), fileName)\n this._reset();\n this.player.emit(EVENTS.recording, false);\n })\n }\n\n _reset() {\n this.isRecording = false;\n this.recordingTimestamp = 0;\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n this.fileName = null;\n if (this.recordingInterval) {\n clearInterval(this.recordingInterval);\n }\n this.recordingInterval = null;\n }\n\n\n}\n","import RecordRTCLoader from \"./recordRTCLoader\";\n\nexport default class Recorder {\n constructor(player) {\n const Loader = Recorder.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return RecordRTCLoader;\n }\n}\n","import {EVENTS, EVENTS_ERROR, MEDIA_TYPE, WASM_ERROR, WORKER_CMD_TYPE, WORKER_SEND_TYPE} from \"../constant\";\nimport {isWebglRenderSupport, now} from \"../utils\";\n\nexport default class DecoderWorker {\n constructor(player) {\n this.player = player;\n this.decoderWorker = new Worker(player._opt.decoder)\n this._initDecoderWorker();\n player.debug.log('decoderWorker', 'init')\n }\n\n async destroy() {\n this.decoderWorker.postMessage({cmd: WORKER_SEND_TYPE.close})\n this.decoderWorker.terminate();\n this.decoderWorker = null;\n this.player.debug.log(`decoderWorker`, 'destroy');\n }\n\n _initDecoderWorker() {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n this.decoderWorker.onmessage = (event) => {\n const msg = event.data;\n switch (msg.cmd) {\n case WORKER_CMD_TYPE.init:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.init);\n if (!this.player.loaded) {\n this.player.emit(EVENTS.load);\n }\n this.player.emit(EVENTS.decoderWorkerInit);\n this._initWork();\n break;\n case WORKER_CMD_TYPE.videoCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.videoCode, msg.code);\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n this.player.video.updateVideoInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.audioCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.audioCode, msg.code);\n this.player.audio && this.player.audio.updateAudioInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.initVideo:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initVideo, `width:${msg.w},height:${msg.h}`);\n this.player.video.updateVideoInfo({\n width: msg.w,\n height: msg.h\n })\n if (!this.player._opt.openWebglAlignment && !isWebglRenderSupport(msg.w)) {\n this.player.emit(EVENTS_ERROR.webglAlignmentError);\n return;\n }\n\n this.player.video.initCanvasViewSize();\n break;\n case WORKER_CMD_TYPE.initAudio:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initAudio, `channels:${msg.channels},sampleRate:${msg.sampleRate}`);\n if (this.player.audio) {\n this.player.audio.updateAudioInfo(msg);\n this.player.audio.initScriptNode(msg);\n }\n break;\n case WORKER_CMD_TYPE.render:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.render, `msg ts:${msg.ts}`);\n this.player.handleRender();\n this.player.video.render(msg);\n this.player.emit(EVENTS.timeUpdate, msg.ts)\n this.player.updateStats({fps: true, ts: msg.ts, buf: msg.delay})\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n break;\n case WORKER_CMD_TYPE.playAudio:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.playAudio, `msg ts:${msg.ts}`);\n // 只有在 playing 的时候。\n if (this.player.playing && this.player.audio) {\n this.player.audio.play(msg.buffer, msg.ts);\n }\n break;\n case WORKER_CMD_TYPE.wasmError:\n if (msg.message) {\n if (msg.message.indexOf(WASM_ERROR.invalidNalUnitSize) !== -1) {\n this.player.emitError(EVENTS_ERROR.wasmDecodeError);\n }\n }\n break;\n default:\n this.player[msg.cmd] && this.player[msg.cmd](msg);\n }\n }\n }\n\n _initWork() {\n const opt = {\n debug: this.player._opt.debug,\n useOffscreen: this.player._opt.useOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\n videoBufferDelay: this.player._opt.videoBufferDelay,\n openWebglAlignment: this.player._opt.openWebglAlignment\n }\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.init,\n opt: JSON.stringify(opt),\n sampleRate: (this.player.audio && this.player.audio.audioContext.sampleRate) || 0\n })\n }\n\n decodeVideo(arrayBuffer, ts, isIFrame) {\n\n const options = {\n type: MEDIA_TYPE.video,\n ts: Math.max(ts, 0),\n isIFrame\n }\n // this.player.debug.log('decoderWorker', 'decodeVideo', options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n decodeAudio(arrayBuffer, ts) {\n if (this.player._opt.useWCS) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else if (this.player._opt.useMSE) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else {\n this._decodeAudio(arrayBuffer, ts);\n }\n }\n\n //\n _decodeAudio(arrayBuffer, ts) {\n const options = {\n type: MEDIA_TYPE.audio,\n ts: Math.max(ts, 0)\n }\n // this.player.debug.log('decoderWorker', 'decodeAudio',options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n\n _decodeAudioNoDelay(arrayBuffer, ts) {\n // console.log('_decodeAudioNoDelay', arrayBuffer);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.audioDecode,\n buffer: arrayBuffer,\n ts: Math.max(ts, 0)\n }, [arrayBuffer.buffer])\n }\n\n\n updateWorkConfig(config) {\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.updateConfig,\n key: config.key,\n value: config.value\n })\n }\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {FRAME_HEADER_EX, FRAME_TYPE_EX, MEDIA_TYPE, PACKET_TYPE_EX} from \"../constant\";\nimport {hevcEncoderNalePacketNotLength} from \"../utils\";\n\nexport default class CommonLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n\n this.stopId = null;\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.initInterval();\n }\n\n destroy() {\n if (this.stopId) {\n clearInterval(this.stopId);\n this.stopId = null;\n }\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.off();\n this.player.debug.log('CommonDemux', 'destroy');\n }\n\n getDelay(timestamp) {\n if (!timestamp) {\n return -1\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp\n this.startTimestamp = Date.now()\n this.delay = -1;\n } else {\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay\n }\n\n resetDelay() {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n }\n\n //\n initInterval() {\n this.player.debug.log('common dumex', `init Interval`);\n let _loop = () => {\n let data;\n const videoBuffer = this.player._opt.videoBuffer;\n const videoBufferDelay = this.player._opt.videoBufferDelay;\n\n if (this.player._opt.useMSE &&\n this.player.mseDecoder &&\n this.player.mseDecoder.getSourceBufferUpdating()) {\n this.player.debug.warn('CommonDemux', `_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);\n return;\n }\n\n if (this.bufferList.length) {\n if (this.dropping) {\n // this.player.debug.log('common dumex', `is dropping`);\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n while (!data.isIFrame && this.bufferList.length) {\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n }\n // i frame\n if (data.isIFrame && this.getDelay(data.ts) <= Math.min(videoBuffer, 200)) {\n this.dropping = false;\n this._doDecoderDecode(data);\n }\n } else {\n data = this.bufferList[0];\n if (this.getDelay(data.ts) === -1) {\n // this.player.debug.log('common dumex', `delay is -1`);\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else if (this.delay > (videoBuffer + videoBufferDelay)) {\n // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true\n } else {\n data = this.bufferList[0]\n if (this.getDelay(data.ts) > videoBuffer) {\n // drop frame\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else {\n // this.player.debug.log('common dumex', `delay is ${this.delay}`);\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame, cts) {\n const player = this.player;\n let options = {\n ts: ts,\n cts: cts,\n type: type,\n isIFrame: false\n }\n // use offscreen\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else if (player._opt.useMSE) {\n // use mse\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else {\n //\n if (type === MEDIA_TYPE.video) {\n player.decoderWorker && player.decoderWorker.decodeVideo(payload, ts, isIFrame);\n } else if (type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(payload, ts);\n }\n }\n }\n }\n\n _doDecoderDecode(data) {\n const player = this.player;\n const {webcodecsDecoder, mseDecoder} = player;\n\n if (data.type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(data.payload, data.ts)\n }\n } else if (data.type === MEDIA_TYPE.video) {\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n webcodecsDecoder.decodeVideo(data.payload, data.ts, data.isIFrame);\n } else if (player._opt.useMSE) {\n mseDecoder.decodeVideo(data.payload, data.ts, data.isIFrame, data.cts);\n }\n }\n }\n\n pushBuffer(payload, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n this.bufferList.push({\n ts: options.ts,\n payload: payload,\n type: MEDIA_TYPE.audio,\n })\n } else if (options.type === MEDIA_TYPE.video) {\n this.bufferList.push({\n ts: options.ts,\n cts: options.cts,\n payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\n }\n\n _decodeEnhancedH265Video(payload, ts) {\n const flags = payload[0];\n const frameTypeEx = flags & 0x30;\n const packetEx = flags & 0x0F;\n const codecId = payload.slice(1, 5);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\n const isAV1 = String.fromCharCode(codecId[0]) == 'a';\n if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_SEQ_START) {\n if (frameTypeEx === FRAME_TYPE_EX.FT_KEY) {\n // header video info\n const extraData = payload.slice(5);\n if (!isAV1) {\n const payloadBuffer = new Uint8Array(5 + extraData.length);\n payloadBuffer.set([0x1c, 0x00, 0x00, 0x00, 0x00], 0);\n payloadBuffer.set(extraData, 5);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, 0, true, 0);\n }\n }\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMES) {\n let payloadBuffer = payload;\n let cts = 0;\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n\n if (!isAV1) {\n // h265\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n cts = tmp32[0];\n const data = payload.slice(8);\n payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMESX) {\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n const data = payload.slice(5);\n let payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, 0);\n }\n }\n\n\n _isEnhancedH265Header(flags) {\n return (flags & FRAME_HEADER_EX) === FRAME_HEADER_EX;\n }\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class FlvLoader extends CommonLoader {\n constructor(player) {\n super(player);\n this.input = this._inputFlv();\n this.flvDemux = this.dispatchFlvData(this.input);\n player.debug.log('FlvDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.input = null;\n this.flvDemux = null;\n this.player.debug.log('FlvDemux', 'destroy')\n }\n\n dispatch(data) {\n this.flvDemux(data);\n }\n\n * _inputFlv() {\n yield 9;\n const tmp = new ArrayBuffer(4)\n const tmp8 = new Uint8Array(tmp)\n const tmp32 = new Uint32Array(tmp)\n const player = this.player;\n\n while (true) {\n tmp8[3] = 0\n const t = yield 15\n const type = t[4]\n tmp8[0] = t[7]\n tmp8[1] = t[6]\n tmp8[2] = t[5]\n const length = tmp32[0]\n tmp8[0] = t[10]\n tmp8[1] = t[9]\n tmp8[2] = t[8]\n let ts = tmp32[0]\n if (ts === 0xFFFFFF) {\n tmp8[3] = t[11]\n ts = tmp32[0]\n }\n const payload = yield length\n switch (type) {\n case FLV_MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, MEDIA_TYPE.audio, ts)\n }\n }\n break\n case FLV_MEDIA_TYPE.video:\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (player._opt.hasVideo) {\n player.updateStats({\n vbps: payload.byteLength\n })\n const flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n }\n }\n break\n }\n }\n }\n\n dispatchFlvData(input) {\n let need = input.next()\n let buffer = null\n return (value) => {\n let data = new Uint8Array(value)\n if (buffer) {\n let combine = new Uint8Array(buffer.length + data.length)\n combine.set(buffer)\n combine.set(data, buffer.length)\n data = combine\n buffer = null\n }\n while (data.length >= need.value) {\n let remain = data.slice(need.value)\n need = input.next(data.slice(0, need.value))\n data = remain\n }\n if (data.length > 0) {\n buffer = data\n }\n }\n }\n\n close() {\n this.input && this.input.return(null)\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class M7sLoader extends CommonLoader {\n constructor(player) {\n super(player);\n player.debug.log('M7sDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.player.debug.log('M7sDemux', 'destroy')\n this.player = null;\n }\n\n dispatch(data) {\n const player = this.player;\n const dv = new DataView(data)\n const type = dv.getUint8(0);\n const ts = dv.getUint32(1, false);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\n switch (type) {\n case MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n const payload = new Uint8Array(data, 5)\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts)\n }\n }\n break;\n case MEDIA_TYPE.video:\n if (player._opt.hasVideo) {\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (dv.byteLength > 5) {\n const payload = new Uint8Array(data, 5);\n\n const flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, type, ts, isIframe, cts);\n }\n } else {\n this.player.debug.warn('M7sDemux', 'dispatch', 'dv byteLength is', dv.byteLength)\n }\n }\n break;\n }\n }\n\n\n}\n","import FlvLoader from \"./flvLoader\";\nimport M7sLoader from \"./m7sLoader\";\nimport {DEMUX_TYPE} from \"../constant\";\n\nexport default class Demux {\n constructor(player) {\n const Loader = Demux.getLoaderFactory(player._opt.demuxType);\n return new Loader(player);\n }\n\n static getLoaderFactory(type) {\n if (type === DEMUX_TYPE.m7s) {\n return M7sLoader;\n } else if (type === DEMUX_TYPE.flv) {\n return FlvLoader;\n }\n }\n}\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Exponential-Golomb buffer decoder\nclass ExpGolomb {\n\n constructor(uint8array) {\n this.TAG = 'ExpGolomb';\n\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n destroy() {\n this._buffer = null;\n }\n\n _fillCurrentWord() {\n let buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) {\n // throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n }\n\n let bytes_read = Math.min(4, buffer_bytes_left);\n let word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n }\n\n readBits(bits) {\n if (bits > 32) {\n // throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n }\n\n if (bits <= this._current_word_bits_left) {\n let result = this._current_word >>> (32 - bits);\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return result;\n }\n\n let result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> (32 - this._current_word_bits_left);\n let bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n\n let result2 = this._current_word >>> (32 - bits_read_next);\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n\n result = (result << bits_read_next) | result2;\n return result;\n }\n\n readBool() {\n return this.readBits(1) === 1;\n }\n\n readByte() {\n return this.readBits(8);\n }\n\n _skipLeadingZero() {\n let zero_count;\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n this._fillCurrentWord();\n return zero_count + this._skipLeadingZero();\n }\n\n readUEG() { // unsigned exponential golomb\n let leading_zeros = this._skipLeadingZero();\n return this.readBits(leading_zeros + 1) - 1;\n }\n\n readSEG() { // signed exponential golomb\n let value = this.readUEG();\n if (value & 0x01) {\n return (value + 1) >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n }\n\n}\n\nexport default ExpGolomb;\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ExpGolomb from './exp-golomb.js';\n\nclass SPSParser {\n\n static _ebsp2rbsp(uint8array) {\n let src = uint8array;\n let src_length = src.byteLength;\n let dst = new Uint8Array(src_length);\n let dst_idx = 0;\n\n for (let i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n }\n\n // 解析 SPS\n // https://zhuanlan.zhihu.com/p/27896239\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n\n gb.readByte();\n // 标识当前H.264码流的profile。\n // 我们知道,H.264中定义了三种常用的档次profile: 基准档次:baseline profile;主要档次:main profile; 扩展档次:extended profile;\n\n let profile_idc = gb.readByte(); // profile_idc\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n // 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。\n let level_idc = gb.readByte(); // level_idc\n // 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。\n gb.readUEG(); // seq_parameter_set_id\n\n let profile_string = SPSParser.getProfileString(profile_idc);\n\n let level_string = SPSParser.getLevelString(level_idc);\n\n let chroma_format_idc = 1;\n let chroma_format = 420;\n let chroma_format_table = [0, 420, 422, 444];\n let bit_depth = 8;\n\n //\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||\n profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||\n profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||\n profile_idc === 138 || profile_idc === 144) {\n //\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n gb.readUEG(); // bit_depth_chroma_minus8\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n if (gb.readBool()) { // seq_scaling_matrix_present_flag\n let scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;\n for (let i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) { // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n // 用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 +\n gb.readUEG(); // log2_max_frame_num_minus4\n // 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。\n let pic_order_cnt_type = gb.readUEG();\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n gb.readSEG(); // offset_for_non_ref_pic\n gb.readSEG(); // offset_for_top_to_bottom_field\n let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n // 用于表示参考帧的最大数目。\n let ref_frames = gb.readUEG(); // max_num_ref_frames\n // 标识位,说明frame_num中是否允许不连续的值。\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n // 用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:\n let pic_width_in_mbs_minus1 = gb.readUEG();\n // 使用PicHeightInMapUnits来度量视频中一帧图像的高度。\n // PicHeightInMapUnits并非图像明确的以像素或宏块为单位的高度,而需要考虑该宏块是帧编码或场编码。PicHeightInMapUnits的计算方式为:\n let pic_height_in_map_units_minus1 = gb.readUEG();\n // 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;\n // 该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,\n // 为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。\n let frame_mbs_only_flag = gb.readBits(1);\n if (frame_mbs_only_flag === 0) {\n // 标识位,说明是否采用了宏块级的帧场自适应编码。当该标识位为0时,不存在帧编码和场编码之间的切换;当标识位为1时,宏块可能在帧编码和场编码模式之间进行选择。\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n // 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。\n gb.readBits(1); // direct_8x8_inference_flag\n\n let frame_crop_left_offset = 0;\n let frame_crop_right_offset = 0;\n let frame_crop_top_offset = 0;\n let frame_crop_bottom_offset = 0;\n\n let frame_cropping_flag = gb.readBool();\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n let sar_width = 1, sar_height = 1;\n let fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;\n // 标识位,说明SPS中是否存在VUI信息。\n let vui_parameters_present_flag = gb.readBool();\n if (vui_parameters_present_flag) {\n if (gb.readBool()) { // aspect_ratio_info_present_flag\n let aspect_ratio_idc = gb.readByte();\n let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) { // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n if (gb.readBool()) { // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n if (gb.readBool()) { // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n if (gb.readBool()) { // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n if (gb.readBool()) { // timing_info_present_flag\n let num_units_in_tick = gb.readBits(32);\n let time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n let sarScale = 1;\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n let crop_unit_x = 0, crop_unit_y = 0;\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n let sub_wc = (chroma_format_idc === 3) ? 1 : 2;\n let sub_hc = (chroma_format_idc === 1) ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n\n let present_width = Math.ceil(codec_width * sarScale);\n\n gb.destroy();\n gb = null;\n\n\n // 解析出来的SPS 内容。\n return {\n profile_string: profile_string, // baseline, high, high10, ...\n level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth, // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format, // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n }\n\n static _skipScalingList(gb, count) {\n let last_scale = 8, next_scale = 8;\n let delta_scale = 0;\n for (let i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n last_scale = (next_scale === 0) ? last_scale : next_scale;\n }\n }\n\n // profile_idc = 66 → baseline profile;\n // profile_idc = 77 → main profile;\n // profile_idc = 88 → extended profile;\n // 在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High\n // 4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra\n static getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n case 77:\n return 'Main';\n case 88:\n return 'Extended';\n case 100:\n return 'High';\n case 110:\n return 'High10';\n case 122:\n return 'High422';\n case 244:\n return 'High444';\n default:\n return 'Unknown';\n }\n }\n\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n static getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n case 422:\n return '4:2:2';\n case 444:\n return '4:4:4';\n default:\n return 'Unknown';\n }\n }\n\n}\n\nexport default SPSParser;","import SPSParser from './h264-sps-parser.js';\n\n//\nexport function parseAVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n const v = new DataView(arrayBuffer.buffer);\n let version = v.getUint8(0); // configurationVersion\n let avcProfile = v.getUint8(1); // avcProfileIndication\n let profileCompatibility = v.getUint8(2); // profile_compatibil\n let avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return meta;\n }\n\n const _naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (_naluLengthSize !== 3 && _naluLengthSize !== 4) { // holy shit!!!\n // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${_naluLengthSize - 1}`);\n return meta;\n }\n let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n return;\n } else if (spsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);\n }\n\n let offset = 6;\n for (let i = 0; i < spsCount; i++) {\n let len = v.getUint16(offset, false); // sequenceParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n\n // Notice: Nalu without startcode header (00 00 00 01)\n let sps = new Uint8Array(arrayBuffer.buffer, offset, len);\n offset += len;\n // flv.js作者选择了自己来解析这个数据结构,也是迫不得已,因为JS环境下没有ffmpeg,解析这个结构主要是为了提取 sps和pps。虽然理论上sps允许有多个,但其实一般就一个。\n // packetTtype 为 1 表示 NALU,NALU= network abstract layer unit,这是H.264的概念,网络抽象层数据单元,其实简单理解就是一帧视频数据。\n // pps的信息没什么用,所以作者只实现了sps的分析器,说明作者下了很大功夫去学习264的标准,其中的Golomb解码还是挺复杂的,能解对不容易,我在PC和手机平台都是用ffmpeg去解析的。\n // SPS里面包括了视频分辨率,帧率,profile level等视频重要信息。\n let config = SPSParser.parseSPS(sps);\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false ||\n config.frame_rate.fps_num === 0 ||\n config.frame_rate.fps_den === 0) {\n meta.frameRate = {};\n }\n\n let fps_den = meta.frameRate.fps_den;\n let fps_num = meta.frameRate.fps_num;\n\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n let codecArray = sps.subarray(1, 4);\n\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n // codec\n meta.codec = codecString;\n }\n\n let ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n if (ppsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n return meta;\n } else if (ppsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);\n }\n\n offset++;\n for (let i = 0; i < ppsCount; i++) {\n let len = v.getUint16(offset, false); // pictureParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n let pps = new Uint8Array(arrayBuffer.buffer, offset, len);\n\n // pps is useless for extracting video information\n offset += len;\n }\n\n meta.videoType = 'avc';\n\n // meta.avcc = arrayBuffer;\n return meta;\n}\n","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE, WCS_ERROR} from \"../constant\";\nimport {parseAVCDecoderConfigurationRecord} from \"../utils/h264\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = false;\n this.isDecodeFirstIIframe = false;\n this.isInitInfo = false;\n this.decoder = null;\n this.initDecoder();\n player.debug.log('Webcodecs', 'init')\n }\n\n destroy() {\n if (this.decoder) {\n if (this.decoder.state !== 'closed') {\n this.decoder.close();\n }\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('Webcodecs', 'destroy')\n }\n\n initDecoder() {\n const _this = this;\n this.decoder = new VideoDecoder({\n output(videoFrame) {\n _this.handleDecode(videoFrame)\n },\n error(error) {\n _this.handleError(error)\n }\n })\n }\n\n handleDecode(videoFrame) {\n if (!this.isInitInfo) {\n this.player.video.updateVideoInfo({\n width: videoFrame.codedWidth,\n height: videoFrame.codedHeight\n })\n this.player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n\n this.player.handleRender();\n this.player.video.render({\n videoFrame\n })\n\n this.player.updateStats({fps: true, ts: 0, buf: this.player.demux.delay})\n }\n\n handleError(error) {\n this.player.debug.error('Webcodecs', 'VideoDecoder handleError', error)\n }\n\n decodeVideo(payload, ts, isIframe) {\n // this.player.debug.log('Webcodecs decoder', 'decodeVideo', ts, isIframe);\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n this.player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n return;\n }\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n\n const config = formatVideoDecoderConfigure(payload.slice(5));\n this.player.debug.log('Webcodecs', 'VideoDecoder configure', config)\n try {\n this.decoder.configure(config);\n }\n catch (e){\n this.player.debug.error('Webcodecs', 'VideoDecoder configure', e);\n this.player.emit(EVENTS_ERROR.webcodecsConfigureError);\n return;\n }\n this.hasInit = true;\n }\n } else {\n\n // check width or height change\n if (isIframe && payload[1] === 0) {\n let data = payload.slice(5);\n const config = parseAVCDecoderConfigurationRecord(data)\n const videoInfo = this.player.video.videoInfo;\n if (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height) {\n this.player.debug.log('Webcodecs', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.player.emit(EVENTS_ERROR.webcodecsWidthOrHeightChange)\n return;\n }\n }\n\n\n // fix : Uncaught DOMException: Failed to execute 'decode' on 'VideoDecoder': A key frame is required after configure() or flush().\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n\n if (this.isDecodeFirstIIframe) {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIframe ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n })\n this.player.emit(EVENTS.timeUpdate, ts);\n try {\n if (this.isDecodeStateClosed()) {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeStateClosed true');\n return;\n }\n this.decoder.decode(chunk);\n } catch (e) {\n this.player.debug.error('Webcodecs', 'VideoDecoder', e)\n if (e.toString().indexOf(WCS_ERROR.keyframeIsRequiredError) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n else if (e.toString().indexOf(WCS_ERROR.canNotDecodeClosedCodec) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n }\n } else {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeFirstIIframe false')\n }\n }\n }\n\n isDecodeStateClosed() {\n return this.decoder.state === 'closed';\n }\n}\n","const iconsMap = {\n play: '播放',\n pause: '暂停',\n audio: '',\n mute: '',\n screenshot: '截图',\n loading: '加载',\n fullscreen: '全屏',\n fullscreenExit: '退出全屏',\n record: '录制',\n recordStop: '停止录制',\n}\n\nexport default Object.keys(iconsMap).reduce((icons, key) => {\n icons[key] = `\n \n ${iconsMap[key] ? `${iconsMap[key]}` : ''}\n`;\n return icons;\n}, {});\n","import icons from './icons';\n\nexport default (player, control) => {\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n player.$container.classList.add('jessibuca-controls-show-auto-hide');\n }\n else {\n player.$container.classList.add('jessibuca-controls-show');\n }\n const options = player._opt;\n const operateBtns = options.operateBtns;\n\n\n player.$container.insertAdjacentHTML(\n 'beforeend',\n `\n ${options.background ? `
` : ''}\n
\n ${icons.loading}\n ${options.loadingText ? `
${options.loadingText}
` : ''}\n
\n ${options.hasControl && operateBtns.play ? `
` : ''}\n ${options.hasControl ? `\n
\n
\n
00:00:01
\n
${icons.recordStop}
\n
\n `:''}\n ${options.hasControl ? `\n
\n
\n
\n ${options.showBandwidth ? `
` : ''}\n
\n
\n ${operateBtns.audio ? `\n
\n ${icons.audio}\n ${icons.mute}\n
\n
\n
\n
\n
\n
\n
\n ` : ''}\n ${operateBtns.play ? `
${icons.play}
${icons.pause}
` : ''}\n ${operateBtns.screenshot ? `
${icons.screenshot}
` : ''}\n ${operateBtns.record ? `
${icons.record}
${icons.recordStop}
` : ''}\n ${operateBtns.fullscreen ? `
${icons.fullscreen}
${icons.fullscreenExit}
` : ''}\n
\n
\n
\n ` : ''}\n\n `\n )\n\n Object.defineProperty(control, '$poster', {\n value: player.$container.querySelector('.jessibuca-poster'),\n });\n\n Object.defineProperty(control, '$loading', {\n value: player.$container.querySelector('.jessibuca-loading'),\n });\n\n Object.defineProperty(control, '$play', {\n value: player.$container.querySelector('.jessibuca-play'),\n });\n\n Object.defineProperty(control, '$playBig', {\n value: player.$container.querySelector('.jessibuca-play-big'),\n });\n\n Object.defineProperty(control, '$recording', {\n value: player.$container.querySelector('.jessibuca-recording'),\n });\n Object.defineProperty(control, '$recordingTime', {\n value: player.$container.querySelector('.jessibuca-recording-time'),\n });\n\n Object.defineProperty(control, '$recordingStop', {\n value: player.$container.querySelector('.jessibuca-recording-stop'),\n });\n\n Object.defineProperty(control, '$pause', {\n value: player.$container.querySelector('.jessibuca-pause'),\n });\n\n Object.defineProperty(control, '$controls', {\n value: player.$container.querySelector('.jessibuca-controls'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n\n Object.defineProperty(control, '$volume', {\n value: player.$container.querySelector('.jessibuca-volume'),\n });\n\n Object.defineProperty(control, '$volumePanelWrap', {\n value: player.$container.querySelector('.jessibuca-volume-panel-wrap'),\n });\n\n Object.defineProperty(control, '$volumePanelText', {\n value: player.$container.querySelector('.jessibuca-volume-panel-text'),\n });\n\n Object.defineProperty(control, '$volumePanel', {\n value: player.$container.querySelector('.jessibuca-volume-panel'),\n });\n\n Object.defineProperty(control, '$volumeHandle', {\n value: player.$container.querySelector('.jessibuca-volume-panel-handle'),\n });\n\n Object.defineProperty(control, '$volumeOn', {\n value: player.$container.querySelector('.jessibuca-icon-audio'),\n });\n\n Object.defineProperty(control, '$volumeOff', {\n value: player.$container.querySelector('.jessibuca-icon-mute'),\n });\n\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreenExit', {\n value: player.$container.querySelector('.jessibuca-fullscreen-exit'),\n });\n\n Object.defineProperty(control, '$record', {\n value: player.$container.querySelector('.jessibuca-record'),\n });\n Object.defineProperty(control, '$recordStop', {\n value: player.$container.querySelector('.jessibuca-record-stop'),\n });\n\n Object.defineProperty(control, '$screenshot', {\n value: player.$container.querySelector('.jessibuca-screenshot'),\n });\n\n Object.defineProperty(control, '$speed', {\n value: player.$container.querySelector('.jessibuca-speed'),\n });\n}\n","import {CONTROL_HEIGHT, EVENTS} from \"../constant\";\nimport {bpsSize, formatTimeTips, getStyle, isBoolean, isMobile, setStyle} from \"../utils\";\nimport screenfull from \"screenfull\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n } = player;\n\n const object = document.createElement('object');\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.type = 'text/html';\n object.data = 'about:blank';\n\n setStyle(object, {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '-1',\n });\n\n let playerWidth = player.width;\n let playerHeight = player.height;\n\n proxy(object, 'load', () => {\n proxy(object.contentDocument.defaultView, 'resize', () => {\n if (player.width !== playerWidth || player.height !== playerHeight) {\n playerWidth = player.width;\n playerHeight = player.height;\n player.emit(EVENTS.resize);\n screenfullH5Control();\n }\n });\n });\n player.$container.appendChild(object);\n\n player.on(EVENTS.destroy, () => {\n player.$container.removeChild(object);\n })\n\n function setVolumeHandle(percentage) {\n if (percentage === 0) {\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'flex');\n setStyle(control.$volumeHandle, 'top', `${48}px`);\n } else {\n if (control.$volumeHandle && control.$volumePanel) {\n const panelHeight = getStyle(control.$volumePanel, 'height') || 60;\n const handleHeight = getStyle(control.$volumeHandle, 'height');\n const top = panelHeight - (panelHeight - handleHeight) * percentage - handleHeight;\n setStyle(control.$volumeHandle, 'top', `${top}px`);\n setStyle(control.$volumeOn, 'display', 'flex');\n setStyle(control.$volumeOff, 'display', 'none');\n }\n }\n control.$volumePanelText && (control.$volumePanelText.innerHTML = parseInt(percentage * 100))\n }\n\n player.on(EVENTS.volumechange, () => {\n setVolumeHandle(player.volume);\n });\n\n player.on(EVENTS.loading, (flag) => {\n setStyle(control.$loading, 'display', flag ? 'flex' : 'none');\n setStyle(control.$poster, 'display', 'none')\n\n if (flag) {\n setStyle(control.$playBig, 'display', 'none');\n }\n })\n\n const screenfullChange = (fullscreen) => {\n let isFullScreen = isBoolean(fullscreen) ? fullscreen : player.fullscreen\n setStyle(control.$fullscreenExit, 'display', isFullScreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', isFullScreen ? 'none' : 'flex');\n // control.autoSize();\n };\n const screenfullH5Control = () => {\n if (isMobile() && control.$controls && player._opt.useWebFullScreen) {\n setTimeout(() => {\n if (player.fullscreen) {\n // console.log(player.width, player.height);\n let translateX = player.height / 2 - player.width + CONTROL_HEIGHT / 2;\n let translateY = player.height / 2 - CONTROL_HEIGHT / 2;\n\n control.$controls.style.transform = `translateX(${-translateX}px) translateY(-${translateY}px) rotate(-90deg)`\n } else {\n control.$controls.style.transform = `translateX(0) translateY(0) rotate(0)`\n }\n\n }, 10)\n }\n }\n\n try {\n\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n\n //\n player.on(EVENTS.webFullscreen, (value) => {\n screenfullChange(value);\n screenfullH5Control();\n\n })\n\n\n player.on(EVENTS.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n setStyle(control.$recording, 'display', player.recording ? 'flex' : 'none')\n if(!player.recording && control.$recordingTime){\n control.$recordingTime.innerHTML = formatTimeTips(0);\n }\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(timestamp);\n control.$recordingTime && (control.$recordingTime.innerHTML = formatTimeTips(timestamp))\n })\n\n player.on(EVENTS.playing, (flag) => {\n setStyle(control.$play, 'display', flag ? 'none' : 'flex');\n setStyle(control.$playBig, 'display', flag ? 'none' : 'block');\n setStyle(control.$pause, 'display', flag ? 'flex' : 'none');\n setStyle(control.$screenshot, 'display', flag ? 'flex' : 'none');\n setStyle(control.$record, 'display', flag ? 'flex' : 'none');\n setStyle(control.$qualityMenu, 'display', flag ? 'flex' : 'none');\n setStyle(control.$volume, 'display', flag ? 'flex' : 'none');\n // setStyle(control.$fullscreen, 'display', flag ? 'flex' : 'none');\n screenfullChange();\n // 不在播放\n if (!flag) {\n control.$speed && (control.$speed.innerHTML = bpsSize(''));\n }\n })\n\n\n player.on(EVENTS.kBps, (rate) => {\n const bps = bpsSize(rate);\n control.$speed && (control.$speed.innerHTML = bps);\n })\n}\n","export default (player, control) => {\n\n Object.defineProperty(control, 'controlsRect', {\n get: () => {\n return control.$controls.getBoundingClientRect();\n },\n });\n\n}\n","import {clamp, isMobile, setStyle} from \"../utils\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n debug\n } = player;\n\n function volumeChangeFromEvent(event) {\n const {bottom: panelBottom, height: panelHeight} = control.$volumePanel.getBoundingClientRect();\n const {height: handleHeight} = control.$volumeHandle.getBoundingClientRect();\n\n let moveLen = event.y;\n\n // if (isMobile() && player.fullscreen) {\n // moveLen = event.x;\n // }\n\n const percentage =\n clamp(panelBottom - moveLen - handleHeight / 2, 0, panelHeight - handleHeight / 2) / (panelHeight - handleHeight);\n return percentage;\n }\n\n //\n proxy(window, ['click', 'contextmenu'], event => {\n if (event.composedPath().indexOf(player.$container) > -1) {\n control.isFocus = true;\n } else {\n control.isFocus = false;\n }\n });\n\n //\n proxy(window, 'orientationchange', () => {\n setTimeout(() => {\n player.resize();\n }, 300);\n });\n\n\n proxy(control.$controls, 'click', (e) => {\n e.stopPropagation();\n })\n\n proxy(control.$pause, 'click', (e) => {\n player.pause();\n })\n // 监听 play 方法\n proxy(control.$play, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n proxy(control.$volume, 'mouseover', () => {\n control.$volumePanelWrap.classList.add('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volume, 'mouseout', () => {\n control.$volumePanelWrap.classList.remove('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volumeOn, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'block');\n const lastVolume = player.volume;\n player.volume = 0;\n player._lastVolume = lastVolume;\n })\n\n proxy(control.$volumeOff, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'block');\n setStyle(control.$volumeOff, 'display', 'none');\n player.volume = player.lastVolume || 0.5;\n })\n\n proxy(control.$screenshot, 'click', (e) => {\n e.stopPropagation();\n player.video.screenshot();\n })\n\n proxy(control.$volumePanel, 'click', event => {\n event.stopPropagation();\n player.volume = volumeChangeFromEvent(event);\n });\n\n proxy(control.$volumeHandle, 'mousedown', () => {\n control.isVolumeDroging = true;\n });\n\n proxy(control.$volumeHandle, 'mousemove', event => {\n if (control.isVolumeDroging) {\n player.volume = volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (control.isVolumeDroging) {\n control.isVolumeDroging = false;\n }\n });\n\n proxy(control.$record, 'click', (e) => {\n e.stopPropagation();\n player.recording = true;\n })\n\n proxy(control.$recordStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$recordingStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$fullscreen, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = true;\n })\n\n proxy(control.$fullscreenExit, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = false;\n })\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n //\n proxy(player.$container, 'mouseover', () => {\n if (!player.fullscreen) {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n })\n\n proxy(player.$container, 'mousemove', () => {\n if (player.$container && control.$controls) {\n if (!player.fullscreen) {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n } else {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n }\n }\n })\n\n proxy(player.$container, 'mouseout', () => {\n stopDelayControlHidden();\n setStyle(control.$controls, 'display', 'none');\n })\n let delayHiddenTimeout = null;\n const startDelayControlHidden = () => {\n stopDelayControlHidden();\n delayHiddenTimeout = setTimeout(() => {\n setStyle(control.$controls, 'display', 'none');\n }, 5 * 1000)\n }\n\n const stopDelayControlHidden = () => {\n if (delayHiddenTimeout) {\n clearTimeout(delayHiddenTimeout);\n delayHiddenTimeout = null;\n }\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// todo: 待定\nimport {HOT_KEY} from \"../constant\";\n\nexport default (player, control) => {\n const {\n events: {proxy}\n } = player;\n\n const keys = {};\n\n function addHotkey(key, event) {\n if (keys[key]) {\n keys[key].push(event);\n } else {\n keys[key] = [event];\n }\n }\n\n //\n addHotkey(HOT_KEY.esc, () => {\n if (player.fullscreen) {\n player.fullscreen = false;\n }\n })\n\n //\n addHotkey(HOT_KEY.arrowUp, () => {\n player.volume += 0.05;\n })\n\n //\n addHotkey(HOT_KEY.arrowDown, () => {\n player.volume -= 0.05;\n })\n\n proxy(window, 'keydown', event => {\n if (control.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n const events = keys[event.keyCode];\n if (events) {\n event.preventDefault();\n events.forEach(fn => fn());\n }\n }\n }\n });\n}\n","import template from \"./template\";\nimport observer from './observer';\nimport property from './property';\nimport events from './events';\nimport './style.scss'\nimport hotkey from \"./hotkey\";\nimport {getStyle, isBoolean, removeElement, setStyle} from \"../utils\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n property(player, this);\n observer(player, this);\n events(player, this);\n if (player._opt.hotKey) {\n hotkey(player, this);\n }\n this.player.debug.log('Control', 'init');\n }\n\n destroy() {\n if (this.$poster) {\n const result = removeElement(this.$poster);\n if(!result){\n const $poster = this.player.$container.querySelector('.jessibuca-poster');\n if ($poster && this.player.$container) {\n this.player.$container.removeChild($poster);\n }\n }\n }\n if (this.$loading) {\n const result = removeElement(this.$loading)\n if (!result) {\n const $loading = this.player.$container.querySelector('.jessibuca-loading');\n if ($loading && this.player.$container) {\n this.player.$container.removeChild($loading);\n }\n }\n }\n if (this.$controls) {\n const result = removeElement(this.$controls)\n if (!result) {\n const $controls = this.player.$container.querySelector('.jessibuca-controls');\n if ($controls && this.player.$container) {\n this.player.$container.removeChild($controls);\n }\n }\n }\n\n if (this.$recording) {\n const result = removeElement(this.$recording)\n if (!result) {\n const $recording = this.player.$container.querySelector('.jessibuca-recording');\n if ($recording && this.player.$container) {\n this.player.$container.removeChild($recording);\n }\n }\n }\n\n if (this.$playBig) {\n const result = removeElement(this.$playBig)\n if (!result) {\n const $playBig = this.player.$container.querySelector('.jessibuca-play-big');\n if ($playBig && this.player.$container) {\n this.player.$container.removeChild($playBig);\n }\n }\n }\n\n if(this.player.$container){\n this.player.$container.classList.remove('jessibuca-controls-show-auto-hide');\n this.player.$container.classList.remove('jessibuca-controls-show');\n }\n\n this.player.debug.log('control', 'destroy');\n }\n\n autoSize() {\n const player = this.player;\n player.$container.style.padding = '0 0';\n const playerWidth = player.width;\n const playerHeight = player.height;\n const playerRatio = playerWidth / playerHeight;\n const canvasWidth = player.video.$videoElement.width;\n const canvasHeight = player.video.$videoElement.height;\n const canvasRatio = canvasWidth / canvasHeight;\n if (playerRatio > canvasRatio) {\n const padding = (playerWidth - playerHeight * canvasRatio) / 2;\n player.$container.style.padding = `0 ${padding}px`;\n } else {\n const padding = (playerHeight - playerWidth / canvasRatio) / 2;\n player.$container.style.padding = `${padding}px 0`;\n }\n }\n\n toggleBar(flag) {\n if (this.$controls) {\n if (!isBoolean(flag)) {\n // flag = this.$controls.style.display === 'none';\n flag = getStyle(this.$controls, 'display', false) === 'none';\n }\n\n if (flag) {\n setStyle(this.$controls, 'display', 'flex');\n } else {\n setStyle(this.$controls, 'display', 'none');\n }\n }\n }\n\n getBarIsShow() {\n let result = false;\n if (this.$controls) {\n result = getStyle(this.$controls, 'display', false) !== 'none';\n }\n return result;\n }\n}\n","import {getTarget} from \"../utils\";\n\nexport default (player) => {\n\n const {\n _opt,\n debug,\n events: {proxy},\n } = player;\n\n\n if (_opt.supportDblclickFullscreen) {\n proxy(player.$container, 'dblclick', (e) => {\n const target = getTarget(e);\n const nodeName = target.nodeName.toLowerCase();\n if (nodeName === 'canvas' || nodeName === 'video') {\n player.fullscreen = !player.fullscreen;\n }\n })\n }\n\n\n //\n proxy(document, 'visibilitychange', () => {\n if (_opt.hiddenAutoPause) {\n debug.log('visibilitychange', document.visibilityState, player._isPlayingBeforePageHidden)\n\n if (\"visible\" === document.visibilityState) {\n if (player._isPlayingBeforePageHidden) {\n player.play();\n }\n } else {\n player._isPlayingBeforePageHidden = player.playing;\n // hidden\n if (player.playing) {\n player.pause();\n }\n }\n }\n })\n\n proxy(window, 'fullscreenchange', () => {\n //\n if (player.keepScreenOn !== null && \"visible\" === document.visibilityState) {\n player.enableWakeLock();\n }\n })\n}\n","class MP4 {\n\n static init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n hvc1: [],\n hvcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n for (let name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [\n name.charCodeAt(0),\n name.charCodeAt(1),\n name.charCodeAt(2),\n name.charCodeAt(3)\n ];\n }\n }\n\n let constants = MP4.constants = {};\n\n constants.FTYP = new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n\n constants.STSD_PREFIX = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n\n constants.STTS = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n constants.STSC = constants.STCO = constants.STTS;\n\n constants.STSZ = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n\n constants.HDLR_VIDEO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x56, 0x69, 0x64, 0x65,\n 0x6F, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n\n constants.HDLR_AUDIO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x53, 0x6F, 0x75, 0x6E,\n 0x64, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n\n constants.DREF = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]);\n\n // Sound media header\n constants.SMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]);\n\n // video media header\n constants.VMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00\n ]);\n }\n\n // Generate a box\n static box(type) {\n let size = 8;\n let result = null;\n let datas = Array.prototype.slice.call(arguments, 1);\n let arrayCount = datas.length;\n\n for (let i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = (size >>> 24) & 0xFF; // size\n result[1] = (size >>> 16) & 0xFF;\n result[2] = (size >>> 8) & 0xFF;\n result[3] = (size) & 0xFF;\n\n result.set(type, 4); // type\n\n let offset = 8;\n for (let i = 0; i < arrayCount; i++) { // data body\n result.set(datas[i], offset);\n offset += datas[i].byteLength;\n }\n\n return result;\n }\n\n // emit ftyp & moov\n static generateInitSegment(meta) {\n let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n let moov = MP4.moov(meta);\n\n let result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n }\n\n // Movie metadata box\n static moov(meta) {\n let mvhd = MP4.mvhd(meta.timescale, meta.duration);\n let trak = MP4.trak(meta);\n let mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n }\n\n // Movie header box\n static mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n }\n\n // Track box\n static trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n }\n\n // Track header box\n static tkhd(meta) {\n let trackId = meta.id, duration = meta.duration;\n let width = meta.presentWidth, height = meta.presentHeight;\n\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (trackId >>> 24) & 0xFF, // track_ID: 4 bytes\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n (width >>> 8) & 0xFF, // width and height\n (width) & 0xFF,\n 0x00, 0x00,\n (height >>> 8) & 0xFF,\n (height) & 0xFF,\n 0x00, 0x00\n ]));\n }\n\n static mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta))\n }\n\n // Media header box\n static mdhd(meta) {\n let timescale = meta.timescale;\n let duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n }\n\n // Media handler reference box\n static hdlr(meta) {\n let data = null;\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n return MP4.box(MP4.types.hdlr, data);\n }\n\n // Media infomation box\n static minf(meta) {\n let xmhd = null;\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n }\n\n // Data infomation box\n static dinf() {\n let result = MP4.box(MP4.types.dinf,\n MP4.box(MP4.types.dref, MP4.constants.DREF)\n );\n return result;\n }\n\n // Sample table box\n static stbl(meta) {\n let result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n }\n\n // Sample description box\n static stsd(meta) {\n if (meta.type === 'audio') {\n // else: aac -> mp4a\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n if (meta.videoType === 'avc') {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n } else {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.hvc1(meta))\n }\n }\n }\n\n static mp4a(meta) {\n let channelCount = meta.channelCount;\n let sampleRate = meta.audioSampleRate;\n\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n (sampleRate >>> 8) & 0xFF, // Audio sample rate\n (sampleRate) & 0xFF,\n 0x00, 0x00\n ]);\n\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n }\n\n static esds(meta) {\n let config = meta.config || [];\n let configSize = config.length;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version 0 + flags\n\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([\n configSize\n ]).concat(\n config\n ).concat([\n 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n }\n\n // avc\n static avc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255]\n );\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc))\n }\n\n // hvc\n static hvc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255\n ]);\n return MP4.box(MP4.types.hvc1, data, MP4.box(MP4.types.hvcC, avcc))\n }\n\n // Movie Extends box\n static mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta))\n }\n\n // Track Extends box\n static trex(meta) {\n let trackId = meta.id;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n }\n\n // Movie fragment box\n static moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime))\n }\n //\n static mfhd(sequenceNumber) {\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n (sequenceNumber >>> 24) & 0xFF, // sequence_number: int32\n (sequenceNumber >>> 16) & 0xFF,\n (sequenceNumber >>> 8) & 0xFF,\n (sequenceNumber) & 0xFF\n ]);\n return MP4.box(MP4.types.mfhd, data);\n }\n\n // Track fragment box\n static traf(track, baseMediaDecodeTime) {\n let trackId = track.id;\n\n // Track fragment header box\n let tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF\n ]));\n // Track Fragment Decode Time\n let tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (baseMediaDecodeTime >>> 24) & 0xFF, // baseMediaDecodeTime: int32\n (baseMediaDecodeTime >>> 16) & 0xFF,\n (baseMediaDecodeTime >>> 8) & 0xFF,\n (baseMediaDecodeTime) & 0xFF\n ]));\n let sdtp = MP4.sdtp(track);\n let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n }\n\n // Sample Dependency Type box\n static sdtp(track) {\n let data = new Uint8Array(4 + 1);\n let flags = track.flags;\n data[4] = flags.isLeading << 6\n | flags.dependsOn << 4\n | flags.isDependedOn << 2\n | flags.hasRedundancy;\n return MP4.box(MP4.types.sdtp, data);\n }\n // trun\n static trun(track, offset) {\n let dataSize = 12 + 16;\n let data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n\n data.set([\n 0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n 0x00, 0x00, 0x00, 0x01, // sample_count\n (offset >>> 24) & 0xFF, // data_offset\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n (offset) & 0xFF\n ], 0);\n\n let duration = track.duration;\n let size = track.size;\n let flags = track.flags;\n let cts = track.cts;\n\n data.set([\n (duration >>> 24) & 0xFF, // sample_duration\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n (size >>> 24) & 0xFF, // sample_size\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n (size) & 0xFF,\n (flags.isLeading << 2) | flags.dependsOn, // sample_flags\n (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,\n 0x00, 0x00, // sample_degradation_priority\n (cts >>> 24) & 0xFF, // sample_composition_time_offset\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n (cts) & 0xFF\n ], 12);\n\n return MP4.box(MP4.types.trun, data);\n }\n // mdat\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data)\n }\n}\n\nMP4.init();\n\nexport default MP4;\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FRAG_DURATION, MEDIA_SOURCE_STATE, MP4_CODECS, VIDEO_ENC_CODE} from \"../constant\";\nimport MP4 from \"../remux/fmp4-generator\";\nimport {parseAVCDecoderConfigurationRecord,} from \"../utils/h264\";\nimport {now} from \"../utils\";\n\nexport default class MseDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.isAvc = true;\n this.mediaSource = new window.MediaSource();\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.cacheTrack = {};\n this.timeInit = false;\n this.sequenceNumber = 0;\n this.mediaSourceOpen = false;\n this.dropping = false;\n this.firstRenderTime = null;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.player.video.$videoElement.src = window.URL.createObjectURL(this.mediaSource);\n const {\n debug,\n events: {proxy},\n } = player;\n\n\n proxy(this.mediaSource, 'sourceopen', () => {\n this.mediaSourceOpen = true;\n this.player.emit(EVENTS.mseSourceOpen)\n })\n\n proxy(this.mediaSource, 'sourceclose', () => {\n this.player.emit(EVENTS.mseSourceClose);\n })\n\n player.debug.log('MediaSource', 'init')\n }\n\n destroy() {\n this.stop();\n this.mediaSource = null;\n this.mediaSourceOpen = false;\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return this.mediaSource && this.mediaSource.readyState\n }\n\n get isStateOpen() {\n return this.state === MEDIA_SOURCE_STATE.open;\n }\n\n get isStateClosed() {\n return this.state === MEDIA_SOURCE_STATE.closed;\n }\n\n get isStateEnded() {\n return this.state === MEDIA_SOURCE_STATE.ended;\n }\n\n get duration() {\n return this.mediaSource && this.mediaSource.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe, cts) {\n const player = this.player;\n\n if (!player) {\n return;\n }\n\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n return;\n }\n if (!player._times.decodeStart) {\n player._times.decodeStart = now();\n }\n\n this._decodeConfigurationRecord(payload, ts, isIframe, videoCodec)\n this.hasInit = true;\n }\n } else {\n if (isIframe && payload[1] === 0) {\n let config = parseAVCDecoderConfigurationRecord(payload.slice(5))\n const videoInfo = this.player.video.videoInfo;\n if ((videoInfo && videoInfo.width && videoInfo.height) && (config && config.codecWidth && config.codecHeight) && (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height)) {\n this.player.debug.warn('MediaSource', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.isInitInfo = false;\n this.player.video.init = false;\n }\n }\n\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n if (this.isDecodeFirstIIframe) {\n if (this.firstRenderTime === null) {\n this.firstRenderTime = ts;\n }\n const dts = ts - this.firstRenderTime;\n\n this._decodeVideo(payload, dts, isIframe, cts);\n } else {\n this.player.debug.warn('MediaSource', 'decodeVideo isDecodeFirstIIframe false')\n }\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n config = parseAVCDecoderConfigurationRecord(data)\n\n const metaData = {\n id: 1, // video tag data\n type: 'video',\n timescale: 1000,\n duration: 0,\n avcc: data,\n codecWidth: config.codecWidth,\n codecHeight: config.codecHeight,\n videoType: config.videoType\n }\n // ftyp\n const metaBox = MP4.generateInitSegment(metaData);\n this.isAvc = true;\n this.appendBuffer(metaBox.buffer);\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n }\n\n //\n _decodeVideo(payload, dts, isIframe, cts) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n const videoBufferDelay = player._opt.videoBufferDelay;\n if ($video.buffered.length > 1) {\n this.removeBuffer($video.buffered.start(0), $video.buffered.end(0));\n this.timeInit = false;\n }\n if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) {\n this.dropping = false;\n this.cacheTrack = {};\n } else if (this.cacheTrack && dts >= this.cacheTrack.dts) {\n // 需要额外加8个size\n let mdatBytes = 8 + this.cacheTrack.size;\n let mdatbox = new Uint8Array(mdatBytes);\n mdatbox[0] = mdatBytes >>> 24 & 255;\n mdatbox[1] = mdatBytes >>> 16 & 255;\n mdatbox[2] = mdatBytes >>> 8 & 255;\n mdatbox[3] = mdatBytes & 255;\n mdatbox.set(MP4.types.mdat, 4);\n mdatbox.set(this.cacheTrack.data, 8);\n\n this.cacheTrack.duration = dts - this.cacheTrack.dts;\n // moof\n let moofbox = MP4.moof(this.cacheTrack, this.cacheTrack.dts);\n let result = new Uint8Array(moofbox.byteLength + mdatbox.byteLength);\n result.set(moofbox, 0);\n result.set(mdatbox, moofbox.byteLength);\n // appendBuffer\n this.appendBuffer(result.buffer)\n player.handleRender();\n player.updateStats({fps: true, ts: dts, buf: (player.demux && player.demux.delay) || 0})\n if (!player._times.videoStart) {\n player._times.videoStart = now();\n player.handlePlayToRenderTimes()\n }\n } else {\n player.debug.log('MediaSource', 'timeInit set false , cacheTrack = {}');\n this.timeInit = false;\n this.cacheTrack = {};\n }\n if (!this.cacheTrack) {\n this.cacheTrack = {};\n }\n this.cacheTrack.id = 1;\n this.cacheTrack.sequenceNumber = ++this.sequenceNumber;\n this.cacheTrack.size = bytes;\n this.cacheTrack.dts = dts;\n this.cacheTrack.cts = cts;\n this.cacheTrack.isKeyframe = isIframe;\n this.cacheTrack.data = arrayBuffer;\n //\n this.cacheTrack.flags = {\n isLeading: 0,\n dependsOn: isIframe ? 2 : 1,\n isDependedOn: isIframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isIframe ? 0 : 1\n }\n\n //\n if (!this.timeInit && $video.buffered.length === 1) {\n player.debug.log('MediaSource', 'timeInit set true');\n this.timeInit = true;\n $video.currentTime = $video.buffered.end(0);\n }\n\n if (!this.isInitInfo && $video.videoWidth > 0 && $video.videoHeight > 0) {\n player.debug.log('MediaSource', `updateVideoInfo: ${$video.videoWidth},${$video.videoHeight}`);\n player.video.updateVideoInfo({\n width: $video.videoWidth,\n height: $video.videoHeight\n })\n player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n }\n\n appendBuffer(buffer) {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n if (this.sourceBuffer === null) {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(MP4_CODECS.avc);\n proxy(this.sourceBuffer, 'error', (error) => {\n debug.error('MediaSource', 'sourceBuffer error', error);\n this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.mediaSourceAppendBufferError) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferError is true`);\n return;\n }\n\n if (this.mediaSourceAppendBufferFull) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferFull is true`);\n return;\n }\n\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n try {\n this.sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n debug.warn('MediaSource', 'this.sourceBuffer.appendBuffer()', e.code, e);\n if (e.code === 22) {\n // QuotaExceededError\n // The SourceBuffer is full, and cannot free space to append additional buffers\n this.stop();\n this.mediaSourceAppendBufferFull = true;\n this.emit(EVENTS_ERROR.mediaSourceFull)\n } else if (e.code === 11) {\n // Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.\n this.stop();\n this.mediaSourceAppendBufferError = true;\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError);\n } else {\n debug.error('MediaSource', 'appendBuffer error', e)\n this.player.emit(EVENTS.mseSourceBufferError, e);\n }\n }\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(true);\n }\n }\n }\n\n stop() {\n this.abortSourceBuffer();\n this.removeSourceBuffer();\n this.endOfStream();\n }\n\n dropSourceBuffer(isDropping) {\n const $video = this.player.video.$videoElement;\n this.dropping = isDropping;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\n this.player.debug.warn('MediaSource', 'dropSourceBuffer', `$video.buffered.end(0) is ${$video.buffered.end(0)} - $video.currentTime ${$video.currentTime}`);\n $video.currentTime = $video.buffered.end(0);\n }\n }\n }\n\n\n removeBuffer(start, end) {\n\n if (this.isStateOpen && this.sourceBuffer.updating === false) {\n try {\n this.sourceBuffer.remove(start, end)\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeBuffer() error', e);\n }\n } else {\n this.player.debug.warn('MediaSource', 'removeBuffer() this.isStateOpen is', this.isStateOpen, 'this.sourceBuffer.updating', this.sourceBuffer.updating);\n }\n }\n\n endOfStream() {\n // fix: MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error\n const $videoElement = this.player.video && this.player.video.$videoElement;\n if (this.isStateOpen && $videoElement && $videoElement.readyState >= 1) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n this.player.debug.warn('MediaSource', 'endOfStream() error', e);\n }\n }\n }\n\n abortSourceBuffer() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n this.sourceBuffer = null;\n }\n }\n }\n\n removeSourceBuffer() {\n if (!this.isStateClosed) {\n if (this.mediaSource && this.sourceBuffer) {\n try {\n this.mediaSource.removeSourceBuffer(this.sourceBuffer);\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeSourceBuffer() error', e);\n }\n }\n }\n }\n\n getSourceBufferUpdating() {\n return this.sourceBuffer && this.sourceBuffer.updating;\n }\n\n}\n","// tks: https://github.com/richtr/NoSleep.js\n\nconst WEBM = \"data:video/webm;base64,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\";\nconst MP4 = \"data:video/mp4;base64,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\";\n\n\n// Detect iOS browsers < version 10\nconst\n oldIOS = () =>\n typeof navigator !== \"undefined\" &&\n parseFloat(\n (\n \"\" +\n (/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(\n navigator.userAgent\n ) || [0, \"\"])[1]\n )\n .replace(\"undefined\", \"3_2\")\n .replace(\"_\", \".\")\n .replace(\"_\", \"\")\n ) < 10 &&\n !window.MSStream;\n\n// Detect native Wake Lock API support\nconst nativeWakeLock = () => \"wakeLock\" in navigator;\n\nexport default class NoSleep {\n constructor(player) {\n this.player = player;\n this.enabled = false;\n if (nativeWakeLock()) {\n this._wakeLock = null;\n const handleVisibilityChange = () => {\n if (this._wakeLock !== null && document.visibilityState === \"visible\") {\n this.enable();\n }\n };\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n document.addEventListener(\"fullscreenchange\", handleVisibilityChange);\n } else if (oldIOS()) {\n this.noSleepTimer = null;\n } else {\n // Set up no sleep video element\n this.noSleepVideo = document.createElement(\"video\");\n\n this.noSleepVideo.setAttribute(\"title\", \"No Sleep\");\n this.noSleepVideo.setAttribute(\"playsinline\", \"\");\n\n this._addSourceToVideo(this.noSleepVideo, \"webm\", WEBM);\n this._addSourceToVideo(this.noSleepVideo, \"mp4\", MP4);\n\n this.noSleepVideo.addEventListener(\"loadedmetadata\", () => {\n if (this.noSleepVideo.duration <= 1) {\n // webm source\n this.noSleepVideo.setAttribute(\"loop\", \"\");\n } else {\n // mp4 source\n this.noSleepVideo.addEventListener(\"timeupdate\", () => {\n if (this.noSleepVideo.currentTime > 0.5) {\n this.noSleepVideo.currentTime = Math.random();\n }\n });\n }\n });\n }\n }\n\n _addSourceToVideo(element, type, dataURI) {\n var source = document.createElement(\"source\");\n source.src = dataURI;\n source.type = `video/${type}`;\n element.appendChild(source);\n }\n\n get isEnabled() {\n return this.enabled;\n }\n\n enable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n return navigator.wakeLock\n .request(\"screen\")\n .then((wakeLock) => {\n this._wakeLock = wakeLock;\n this.enabled = true;\n debug.log('wakeLock', 'Wake Lock active.')\n this._wakeLock.addEventListener(\"release\", () => {\n // ToDo: Potentially emit an event for the page to observe since\n // Wake Lock releases happen when page visibility changes.\n // (https://web.dev/wakelock/#wake-lock-lifecycle)\n debug.log('wakeLock', 'Wake Lock released.')\n });\n })\n .catch((err) => {\n this.enabled = false;\n debug.error('wakeLock', `${err.name}, ${err.message}`)\n throw err;\n });\n } else if (oldIOS()) {\n this.disable();\n this.noSleepTimer = window.setInterval(() => {\n if (!document.hidden) {\n window.location.href = window.location.href.split(\"#\")[0];\n window.setTimeout(window.stop, 0);\n }\n }, 15000);\n this.enabled = true;\n return Promise.resolve();\n } else {\n let playPromise = this.noSleepVideo.play();\n return playPromise\n .then((res) => {\n this.enabled = true;\n return res;\n })\n .catch((err) => {\n this.enabled = false;\n throw err;\n });\n }\n }\n\n disable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n if (this._wakeLock) {\n this._wakeLock.release();\n }\n this._wakeLock = null;\n } else if (oldIOS()) {\n if (this.noSleepTimer) {\n debug.warn('wakeLock', 'NoSleep now disabled for older iOS devices.')\n\n window.clearInterval(this.noSleepTimer);\n this.noSleepTimer = null;\n }\n } else {\n this.noSleepVideo.pause();\n }\n this.enabled = false;\n }\n}\n","import {DEFAULT_PLAYER_OPTIONS, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport Debug from \"../utils/debug\";\nimport Events from \"../utils/events\";\nimport property from './property';\nimport events from './events';\nimport {\n fpsStatus,\n initPlayTimes,\n isEmpty, isFalse,\n isFullScreen, isMobile,isPad,\n isNotEmpty,\n now, supportMediaStreamTrack,\n supportMSE,\n supportOffscreenV2,\n supportWCS\n} from \"../utils\";\nimport Video from \"../video\";\nimport Audio from \"../audio\";\nimport Stream from \"../stream\";\nimport Recorder from \"../recorder\";\nimport DecoderWorker from \"../worker/index\";\nimport Emitter from \"../utils/emitter\";\nimport Demux from \"../demux\";\nimport WebcodecsDecoder from \"../decoder/webcodecs\";\nimport Control from \"../control\";\nimport './style.scss'\nimport observer from \"./observer\";\nimport MseDecoder from \"../decoder/mediaSource\";\nimport NoSleep from \"../utils/noSleep\";\nimport screenfull from \"screenfull\";\n\nexport default class Player extends Emitter {\n constructor(container, options) {\n super()\n this.$container = container;\n this._opt = Object.assign({}, DEFAULT_PLAYER_OPTIONS, options)\n this.debug = new Debug(this);\n this.debug.log('Player', 'init');\n\n // disable offscreen\n this._opt.forceNoOffscreen = true;\n\n if (isMobile() || isPad()) {\n this.debug.log('Player', 'isMobile and set _opt.controlAutoHide false');\n this._opt.controlAutoHide = false;\n }\n\n if (screenfull.isEnabled &&\n this._opt.useWebFullScreen) {\n this.debug.log('Player', 'screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false');\n this._opt.useWebFullScreen = false;\n }\n\n if (isFalse(screenfull.isEnabled) &&\n isFalse(this._opt.useWebFullScreen)) {\n this.debug.log('Player', 'screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true');\n this._opt.useWebFullScreen = true;\n }\n\n\n //\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n //\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\n }\n\n //\n if (this._opt.wcsUseVideoRender) {\n this._opt.wcsUseVideoRender = supportMediaStreamTrack()\n }\n\n // 如果使用mse则强制不允许 webcodecs\n if (this._opt.useMSE) {\n if (this._opt.useWCS) {\n this.debug.log('Player', 'useWCS set true->false')\n }\n\n if (!this._opt.forceNoOffscreen) {\n this.debug.log('Player', 'forceNoOffscreen set false->true')\n }\n\n this._opt.useWCS = false;\n this._opt.forceNoOffscreen = true;\n }\n\n if (!this._opt.forceNoOffscreen) {\n if (!supportOffscreenV2()) {\n this._opt.forceNoOffscreen = true;\n this._opt.useOffscreen = false;\n } else {\n this._opt.useOffscreen = true;\n }\n }\n\n if (!this._opt.hasAudio) {\n this._opt.operateBtns.audio = false\n }\n\n this._opt.hasControl = this._hasControl();\n //\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n //\n this._checkHeartTimeout = null;\n this._checkLoadingTimeout = null;\n this._checkStatsInterval = null;\n\n //\n this._startBpsTime = null;\n this._isPlayingBeforePageHidden = false;\n this._stats = {\n buf: 0, // 当前缓冲区时长,单位毫秒,\n fps: 0, // 当前视频帧率\n abps: 0, // 当前音频码率,单位bit\n vbps: 0, // 当前视频码率,单位bit\n ts: 0 // 当前视频帧pts,单位毫秒\n }\n\n // 各个步骤的时间统计\n this._times = initPlayTimes();\n\n //\n this._videoTimestamp = 0;\n this._audioTimestamp = 0;\n\n property(this);\n\n this.events = new Events(this);\n this.video = new Video(this);\n\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n this.recorder = new Recorder(this);\n\n if (!this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n } else {\n this.loaded = true;\n }\n\n this.stream = null;\n this.demux = null;\n this._lastVolume = null;\n\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n this.loaded = true\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n this.loaded = true\n }\n\n //\n this.control = new Control(this);\n\n if (isMobile()) {\n this.keepScreenOn = new NoSleep(this);\n }\n\n events(this);\n observer(this);\n\n if (this._opt.useWCS) {\n this.debug.log('Player', 'use WCS')\n }\n\n if (this._opt.useMSE) {\n this.debug.log('Player', 'use MSE')\n }\n\n if (this._opt.useOffscreen) {\n this.debug.log('Player', 'use offscreen')\n }\n\n try {\n this.debug.log('Player options', JSON.stringify(this._opt));\n } catch (e) {\n // ignore\n }\n }\n\n\n async destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n this._lastVolume = null;\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n await this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n if (this.video) {\n this.video.destroy();\n this.video = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n\n if (this.stream) {\n await this.stream.destroy();\n this.stream = null;\n }\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n //\n this.releaseWakeLock();\n this.keepScreenOn = null;\n // reset stats\n this.resetStats();\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n\n // 其他没法解耦的,通过 destroy 方式\n this.emit('destroy');\n // 接触所有绑定事件\n this.off();\n\n this.debug.log('play', 'destroy end');\n }\n\n set fullscreen(value) {\n if (isMobile() && this._opt.useWebFullScreen) {\n this.emit(EVENTS.webFullscreen, value);\n setTimeout(() => {\n this.updateOption({\n rotate: value ? 270 : 0,\n })\n this.resize();\n }, 10)\n } else {\n this.emit(EVENTS.fullscreen, value);\n }\n }\n\n get fullscreen() {\n return isFullScreen() || this.webFullscreen;\n }\n\n set webFullscreen(value) {\n this.emit(EVENTS.webFullscreen, value);\n }\n\n get webFullscreen() {\n return this.$container.classList.contains('jessibuca-fullscreen-web')\n }\n\n set loaded(value) {\n this._hasLoaded = value;\n }\n\n get loaded() {\n return this._hasLoaded;\n }\n\n //\n set playing(value) {\n\n if (value) {\n // 将loading 设置为 false\n this.loading = false;\n }\n\n if (this.playing !== value) {\n this._playing = value;\n this.emit(EVENTS.playing, value);\n this.emit(EVENTS.volumechange, this.volume);\n\n if (value) {\n this.emit(EVENTS.play);\n } else {\n this.emit(EVENTS.pause);\n }\n }\n }\n\n get playing() {\n return this._playing;\n }\n\n get volume() {\n return (this.audio && this.audio.volume) || 0;\n }\n\n set volume(value) {\n if (value !== this.volume) {\n this.audio && this.audio.setVolume(value);\n this._lastVolume = value;\n }\n }\n\n get lastVolume() {\n return this._lastVolume\n }\n\n set loading(value) {\n if (this.loading !== value) {\n this._loading = value;\n this.emit(EVENTS.loading, this._loading);\n }\n }\n\n get loading() {\n return this._loading;\n }\n\n set recording(value) {\n if (value) {\n if (this.playing) {\n this.recorder && this.recorder.startRecord();\n }\n } else {\n this.recorder && this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder ? this.recorder.recording : false;\n }\n\n set audioTimestamp(value) {\n if (value === null) {\n return;\n }\n this._audioTimestamp = value;\n }\n\n //\n get audioTimestamp() {\n return this._audioTimestamp;\n }\n\n //\n set videoTimestamp(value) {\n if (value === null) {\n return;\n }\n this._videoTimestamp = value;\n // just for wasm\n if (!this._opt.useWCS && !this._opt.useMSE) {\n if (this.audioTimestamp && this.videoTimestamp) {\n this.audio && this.audio.emit(EVENTS.videoSyncAudio, {\n audioTimestamp: this.audioTimestamp,\n videoTimestamp: this.videoTimestamp,\n diff: this.audioTimestamp - this.videoTimestamp\n })\n }\n }\n }\n\n //\n get videoTimestamp() {\n return this._videoTimestamp;\n }\n\n get isDebug() {\n return this._opt.debug === true;\n }\n\n\n /**\n *\n * @param options\n */\n updateOption(options) {\n this._opt = Object.assign({}, this._opt, options)\n }\n\n /**\n *\n * @returns {Promise}\n */\n init() {\n return new Promise((resolve, reject) => {\n if (!this.stream) {\n this.stream = new Stream(this);\n }\n\n if (!this.audio) {\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n }\n if (!this.demux) {\n this.demux = new Demux(this);\n }\n\n if (this._opt.useWCS) {\n if (!this.webcodecsDecoder) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n }\n\n if (this._opt.useMSE) {\n if (!this.mseDecoder) {\n this.mseDecoder = new MseDecoder(this);\n }\n }\n\n if (!this.decoderWorker && !this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n this.debug.log('Player', 'waiting decoderWorker init');\n this.once(EVENTS.decoderWorkerInit, () => {\n this.debug.log('Player', 'decoderWorker init success');\n resolve()\n })\n } else {\n resolve()\n }\n\n })\n }\n\n\n /**\n *\n * @param url\n * @returns {Promise}\n */\n play(url, options) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n return reject();\n }\n\n this.loading = true;\n this.playing = false;\n this._times.playInitStart = now();\n if (!url) {\n url = this._opt.url;\n }\n this._opt.url = url;\n\n this.clearCheckHeartTimeout();\n\n this.init().then(() => {\n this._times.playStart = now();\n //\n if (this._opt.isNotMute) {\n this.mute(false);\n }\n\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.webcodecsH265NotSupport);\n }\n })\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.mediaSourceH265NotSupport);\n }\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.emitError(EVENTS_ERROR.mediaSourceFull)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferError)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.emitError(EVENTS_ERROR.mediaSourceBufferListLarge);\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout);\n })\n }\n\n this.enableWakeLock();\n\n this.stream.fetchStream(url, options);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.fetchError, error);\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.websocketError, error);\n })\n\n // stream end\n this.stream.once(EVENTS.streamEnd, (msg) => {\n // reject();\n this.emitError(EVENTS.streamEnd, msg);\n })\n\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\n this.checkStatsInterval();\n })\n\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n /**\n *\n */\n close() {\n return new Promise((resolve, reject) => {\n this._close().then(() => {\n this.video && this.video.clearView();\n resolve()\n })\n })\n }\n\n resumeAudioAfterPause() {\n if (this.lastVolume) {\n this.volume = this.lastVolume;\n }\n }\n\n _close() {\n return new Promise((resolve, reject) => {\n //\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n //\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n\n if (this.video) {\n this.video.resetInit();\n this.video.pause(true);\n }\n // release lock\n this.releaseWakeLock();\n // reset stats\n this.resetStats();\n //\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n //\n this._times = initPlayTimes();\n //\n setTimeout(() => {\n resolve()\n }, 0)\n })\n }\n\n /**\n *\n * @param flag {boolean} 是否清除画面\n * @returns {Promise}\n */\n pause(flag = false) {\n if (flag) {\n return this.close();\n } else {\n return this._close();\n }\n }\n\n /**\n *\n * @param flag\n */\n mute(flag) {\n this.audio && this.audio.mute(flag)\n }\n\n /**\n *\n */\n resize() {\n this.video.resize();\n }\n\n /**\n *\n * @param fileName\n * @param fileType\n */\n startRecord(fileName, fileType) {\n if (this.recording) {\n return;\n }\n\n this.recorder.setFileName(fileName, fileType);\n this.recording = true;\n }\n\n /**\n *\n */\n stopRecordAndSave() {\n if (this.recording) {\n this.recording = false;\n }\n }\n\n _hasControl() {\n let result = false;\n\n let hasBtnShow = false;\n Object.keys(this._opt.operateBtns).forEach((key) => {\n if (this._opt.operateBtns[key]) {\n hasBtnShow = true;\n }\n });\n\n if (this._opt.showBandwidth || this._opt.text || hasBtnShow) {\n result = true;\n }\n\n return result;\n }\n\n _onlyMseOrWcsVideo() {\n return this._opt.hasAudio === false && (this._opt.useMSE || (this._opt.useWCS && !this._opt.useOffscreen))\n }\n\n checkHeart() {\n this.clearCheckHeartTimeout();\n this.checkHeartTimeout();\n }\n\n // 心跳检查,如果渲染间隔暂停了多少时间之后,就会抛出异常\n checkHeartTimeout() {\n this._checkHeartTimeout = setTimeout(() => {\n if (this.playing) {\n // check again\n if (this._stats.fps !== 0) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }\n\n }, this._opt.heartTimeout * 1000)\n }\n\n checkStatsInterval() {\n this._checkStatsInterval = setInterval(() => {\n this.updateStats();\n }, 1000)\n }\n\n //\n clearCheckHeartTimeout() {\n if (this._checkHeartTimeout) {\n clearTimeout(this._checkHeartTimeout);\n this._checkHeartTimeout = null;\n }\n }\n\n // loading 等待时间\n checkLoadingTimeout() {\n this._checkLoadingTimeout = setTimeout(() => {\n // check again\n if (this.playing) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.loadingTimeout);\n this.emit(EVENTS.loadingTimeout);\n });\n }, this._opt.loadingTimeout * 1000)\n }\n\n clearCheckLoadingTimeout() {\n if (this._checkLoadingTimeout) {\n clearTimeout(this._checkLoadingTimeout);\n this._checkLoadingTimeout = null;\n }\n }\n\n clearStatsInterval() {\n if (this._checkStatsInterval) {\n clearInterval(this._checkStatsInterval);\n this._checkStatsInterval = null;\n }\n }\n\n handleRender() {\n if (this.loading) {\n this.emit(EVENTS.start);\n this.loading = false;\n this.clearCheckLoadingTimeout();\n }\n if (!this.playing) {\n this.playing = true;\n }\n this.checkHeart();\n }\n\n\n //\n updateStats(options) {\n options = options || {};\n\n if (!this._startBpsTime) {\n this._startBpsTime = now();\n }\n\n if (isNotEmpty(options.ts)) {\n this._stats.ts = options.ts;\n }\n\n if (isNotEmpty(options.buf)) {\n this._stats.buf = options.buf;\n }\n\n if (options.fps) {\n this._stats.fps += 1;\n }\n if (options.abps) {\n this._stats.abps += options.abps;\n }\n if (options.vbps) {\n this._stats.vbps += options.vbps;\n }\n\n const _nowTime = now();\n const timestamp = _nowTime - this._startBpsTime;\n\n if (timestamp < 1 * 1000) {\n return;\n }\n\n this.emit(EVENTS.stats, this._stats);\n this.emit(EVENTS.performance, fpsStatus(this._stats.fps));\n this._stats.fps = 0;\n this._stats.abps = 0;\n this._stats.vbps = 0;\n this._startBpsTime = _nowTime;\n }\n\n resetStats() {\n this._startBpsTime = null;\n this._stats = {\n buf: 0, //ms\n fps: 0,\n abps: 0,\n vbps: 0,\n ts: 0\n }\n }\n\n enableWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.disable();\n }\n }\n\n handlePlayToRenderTimes() {\n const _times = this._times;\n _times.playTimestamp = _times.playStart - _times.playInitStart;\n _times.streamTimestamp = _times.streamStart - _times.playStart;\n _times.streamResponseTimestamp = _times.streamResponse - _times.streamStart;\n _times.demuxTimestamp = _times.demuxStart - _times.streamResponse;\n _times.decodeTimestamp = _times.decodeStart - _times.demuxStart;\n _times.videoTimestamp = _times.videoStart - _times.decodeStart;\n _times.allTimestamp = _times.videoStart - _times.playInitStart;\n this.emit(EVENTS.playToRenderTimes, _times);\n }\n\n getOption() {\n return this._opt;\n }\n\n emitError(errorType, message = '') {\n this.emit(EVENTS.error, errorType, message);\n this.emit(errorType, message);\n }\n\n isControlBarShow() {\n const hasControl = this._opt.hasControl;\n const controlAutoHide = this._opt.controlAutoHide;\n\n let result = hasControl && !controlAutoHide;\n\n if (result) {\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n }\n\n return result;\n }\n\n getControlBarShow(){\n let result = false;\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n return result;\n }\n\n toggleControlBar(isShow) {\n if (this.control) {\n this.control.toggleBar(isShow);\n this.resize();\n }\n }\n}\n","import Player from './player';\nimport Events from \"./utils/events\";\nimport {\n CONTAINER_DATA_SET_KEY,\n DEMUX_TYPE,\n EVENTS,\n EVENTS_ERROR,\n JESSIBUCA_EVENTS,\n PLAYER_PLAY_PROTOCOL,\n SCALE_MODE_TYPE\n} from \"./constant\";\nimport {\n getElementDataset,\n isEmpty,\n isMobile,\n isNotEmpty,\n removeElementDataset,\n setElementDataset,\n supportWCS,\n uuid16\n} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\nimport Debug from \"./utils/debug\";\n\n\nclass Jessibuca extends Emitter {\n static ERROR = EVENTS_ERROR\n\n static TIMEOUT = {\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n }\n\n constructor(options) {\n super()\n let _opt = options;\n let $container = options.container;\n if (typeof options.container === 'string') {\n $container = document.querySelector(options.container);\n }\n if (!$container) {\n throw new Error('Jessibuca need container option');\n return;\n }\n // check container node name\n if ($container.nodeName === 'CANVAS' || $container.nodeName === 'VIDEO') {\n throw new Error(`Jessibuca container type can not be ${$container.nodeName} type`);\n return;\n }\n\n if (_opt.videoBuffer >= _opt.heartTimeout) {\n throw new Error(`Jessibuca videoBuffer ${_opt.videoBuffer}s must be less than heartTimeout ${_opt.heartTimeout}s`);\n return;\n }\n\n\n if (this._checkHasCreated($container)) {\n throw new Error(`Jessibuca container has been created and can not be created again`, $container);\n return;\n }\n\n // videoBuffer set too long\n if (_opt.videoBuffer > 10) {\n console.warn('Jessibuca', `videoBuffer ${_opt.videoBuffer}s is too long, will black screen for ${_opt.videoBuffer}s , it is recommended to set it to less than 10s`);\n }\n\n if (!$container.classList) {\n throw new Error('Jessibuca container option must be DOM Element');\n return;\n }\n\n $container.classList.add('jessibuca-container');\n setElementDataset($container, CONTAINER_DATA_SET_KEY, uuid16());\n\n delete _opt.container;\n\n // 禁用离屏渲染\n _opt.forceNoOffscreen = true;\n\n // 移动端不支持自动关闭控制栏\n if (isMobile()) {\n _opt.controlAutoHide = false;\n }\n\n // s -> ms\n if (isNotEmpty(_opt.videoBuffer)) {\n _opt.videoBuffer = Number(_opt.videoBuffer) * 1000\n }\n\n // setting\n if (isNotEmpty(_opt.timeout)) {\n if (isEmpty(_opt.loadingTimeout)) {\n _opt.loadingTimeout = _opt.timeout;\n }\n\n if (isEmpty(_opt.heartTimeout)) {\n _opt.heartTimeout = _opt.timeout\n }\n }\n\n this._opt = _opt;\n this.$container = $container;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this._destroyed = false;\n this.events = new Events(this);\n this.debug = new Debug(this);\n this._initPlayer($container, _opt);\n }\n\n /**\n *\n */\n async destroy() {\n this._destroyed = true;\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.player) {\n await this.player.destroy();\n this.player = null;\n }\n if(this.$container){\n this.$container.classList.remove('jessibuca-container');\n this.$container.classList.remove('jessibuca-fullscreen-web');\n removeElementDataset(this.$container, CONTAINER_DATA_SET_KEY);\n this.$container = null;\n }\n\n this._opt = null;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.off();\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n try {\n this.debug.log('jessibuca', '_initPlayer', JSON.stringify(this.player.getOption()))\n } catch (e) {\n // ignore\n }\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n this._opt = Object.assign(this._opt, options);\n this._opt.url = '';// reset url\n this._initPlayer(this.$container, this._opt);\n }\n\n _bindEvents() {\n // 对外的事件\n Object.keys(JESSIBUCA_EVENTS).forEach((key) => {\n this.player.on(JESSIBUCA_EVENTS[key], (value) => {\n this.emit(key, value)\n })\n })\n }\n\n /**\n * 是否销毁\n * @returns {boolean}\n */\n isDestroyed(){\n return this._destroyed;\n }\n\n /**\n * 是否开启控制台调试打印\n * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n debug: !!value\n })\n }\n\n /**\n *\n */\n mute() {\n this.player.mute(true);\n }\n\n /**\n *\n */\n cancelMute() {\n this.player.mute(false);\n }\n\n /**\n *\n * @param value {number}\n */\n setVolume(value) {\n this.player.volume = value;\n }\n\n /**\n *\n */\n audioResume() {\n this.player.audio && this.player.audio.audioEnabled(true);\n }\n\n /**\n * 设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件\n * @param value {number}\n */\n setTimeout(time) {\n time = Number(time);\n this.player.updateOption({\n timeout: time,\n loadingTimeout: time,\n heartTimeout: time\n })\n }\n\n /**\n *\n * @param type {number}: 0,1,2\n */\n setScaleMode(type) {\n type = Number(type);\n let options = {\n isFullResize: false,\n isResize: false\n }\n switch (type) {\n case SCALE_MODE_TYPE.full:\n options.isFullResize = false;\n options.isResize = false;\n break;\n case SCALE_MODE_TYPE.auto:\n options.isFullResize = false;\n options.isResize = true;\n break;\n case SCALE_MODE_TYPE.fullAuto:\n options.isFullResize = true;\n options.isResize = true;\n break;\n }\n\n this.player.updateOption(options);\n this.resize();\n }\n\n /**\n *\n * @returns {Promise}\n */\n pause() {\n return new Promise((resolve, reject) => {\n if (this.player) {\n this.player.pause().then(() => {\n resolve();\n }).catch((e) => {\n reject(e)\n });\n } else {\n reject('player is null')\n }\n })\n }\n\n /**\n *\n */\n close() {\n // clear url\n this._opt.url = '';\n this._opt.playOptions = {};\n return this.player.close();\n }\n\n\n /**\n *\n */\n clearView() {\n this.player.video.clearView()\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n */\n play(url, options = {}) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject('play url is empty')\n return;\n }\n\n if (url) {\n // url 相等的时候。\n if (this._opt.url) {\n // 存在相同的 url\n if (url === this._opt.url) {\n // 正在播放\n if (this.player.playing) {\n resolve();\n } else {\n // pause -> play\n this.clearView();\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'pause -> play and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._opt.url is null and pause error', e)\n reject(e);\n })\n }\n } else {\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'url is null and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n * @private\n */\n _play(url, options = {}) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\n this._opt.playOptions = options;\n // 新的url\n const isHttp = url.indexOf(\"http\") === 0;\n //\n const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket\n //\n const demuxType = (isHttp || url.indexOf(\".flv\") !== -1 || this._opt.isFlv) ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s;\n\n this.player.updateOption({\n protocol,\n demuxType\n })\n\n this.player.once(EVENTS_ERROR.webglAlignmentError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webglAlignmentError')\n this._resetPlayer({openWebglAlignment: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webglAlignmentError and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'webglAlignmentError and play error')\n });\n });\n })\n\n\n this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'media source h265 not support and paused');\n }\n });\n })\n\n // media source full error\n this.player.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source full');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source full and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source full and reset player and play error')\n });\n })\n })\n // media source append buffer error\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer error');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer error and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer error and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source buffer list large');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source buffer list large and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source buffer list large and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer end timeout');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer end timeout and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer end timeout and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mseSourceBufferError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'mse source buffer error and paused');\n }\n })\n })\n //\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs h265 not support and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsWidthOrHeightChange, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play')\n this._resetPlayer({useWCS: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Width Or Height Change reset player and play error')\n });\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsDecodeError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs decode error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs decode error and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsConfigureError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Configure error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs Configure error and paused');\n }\n });\n })\n // wasm。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch((e) => {\n // reject();\n this.debug.warn('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n } else {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and paused');\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'wasm decode error and paused error', e)\n })\n }\n })\n // fetch error\n this.player.once(EVENTS_ERROR.fetchError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'fetch error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'fetch error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS_ERROR.websocketError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'websocket Error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'websocket Error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS.streamEnd, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'stream End and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'stream End and pause play error', e)\n })\n })\n\n // 监听 delay timeout\n this.player.on(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay &&\n (this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes || this.player._opt.heartTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `delay timeout replay time is ${this._heartTimeoutReplayTimes}`)\n this._heartTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.on(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay &&\n (this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes || this.player._opt.loadingTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `loading timeout replay time is ${this._loadingTimeoutReplayTimes}`)\n this._loadingTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._loadingTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n\n if (this.hasLoaded()) {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'hasLoaded and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'decoderWorkerInit and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n })\n }\n })\n }\n\n\n /**\n *\n */\n resize() {\n this.player.resize();\n }\n\n /**\n *\n * @param time {number} s\n */\n setBufferTime(time) {\n time = Number(time)\n // s -> ms\n this.player.updateOption({\n videoBuffer: time * 1000\n })\n // update worker config\n this.player.decoderWorker && this.player.decoderWorker.updateWorkConfig({\n key: 'videoBuffer',\n value: time * 1000\n })\n }\n\n /**\n *\n * @param deg {number}\n */\n setRotate(deg) {\n deg = parseInt(deg, 10)\n const list = [0, 90, 180, 270];\n if (this._opt.rotate === deg || list.indexOf(deg) === -1) {\n return;\n }\n this.player.updateOption({\n rotate: deg\n })\n this.resize();\n }\n\n /**\n *\n * @returns {boolean}\n */\n hasLoaded() {\n return this.player.loaded;\n }\n\n /**\n *\n */\n setKeepScreenOn() {\n this.player.updateOption({\n keepScreenOn: true\n })\n }\n\n /**\n *\n * @param flag {Boolean}\n */\n setFullscreen(flag) {\n const fullscreen = !!flag;\n if (this.player.fullscreen !== fullscreen) {\n this.player.fullscreen = fullscreen;\n }\n }\n\n /**\n *\n * @param filename {string}\n * @param format {string}\n * @param quality {number}\n * @param type {string} download,base64,blob\n */\n screenshot(filename, format, quality, type) {\n\n if (!this.player.video) {\n return ''\n }\n\n return this.player.video.screenshot(filename, format, quality, type)\n }\n\n /**\n *\n * @param fileName {string}\n * @param fileType {string}\n * @returns {Promise}\n */\n startRecord(fileName, fileType) {\n return new Promise((resolve, reject) => {\n if (this.player.playing) {\n this.player.startRecord(fileName, fileType)\n resolve();\n } else {\n reject();\n }\n })\n }\n\n stopRecordAndSave() {\n if (this.player.recording) {\n this.player.stopRecordAndSave();\n }\n }\n\n /**\n *\n * @returns {Boolean}\n */\n isPlaying() {\n return this.player ? this.player.playing : false;\n }\n\n /**\n * 是否静音状态\n * @returns {Boolean}\n */\n isMute() {\n return this.player.audio ? this.player.audio.isMute : true;\n }\n\n /**\n * 是否在录制视频\n * @returns {*}\n */\n isRecording() {\n return this.player.recorder.recording;\n }\n\n _checkHasCreated(element){\n if (!element) return false;\n const gbProV = getElementDataset(element, CONTAINER_DATA_SET_KEY);\n if (gbProV) {\n return true;\n }\n return false;\n }\n\n\n toggleControlBar(isShow) {\n if (this.isDestroyed()) {\n return;\n }\n\n if (this.player) {\n this.player.toggleControlBar(isShow);\n }\n }\n\n getControlBarShow() {\n if (this.isDestroyed()) {\n return false;\n }\n let result = false;\n if (this.player) {\n result = this.player.getControlBarShow();\n }\n return result;\n }\n\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","CONTAINER_DATA_SET_KEY","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","init","initVideo","render","playAudio","initAudio","kBps","decode","audioCode","videoCode","wasmError","WASM_ERROR","invalidNalUnitSize","MEDIA_TYPE","video","FLV_MEDIA_TYPE","WORKER_SEND_TYPE","audioDecode","videoDecode","close","updateConfig","EVENTS","webFullscreen","decoderWorkerInit","playing","pause","mute","load","loading","videoInfo","timeUpdate","audioInfo","log","error","delayTimeout","stats","performance","recording","recordingTimestamp","recordStart","recordEnd","recordCreateError","buffer","videoFrame","start","metadata","resize","streamEnd","streamSuccess","streamMessage","streamError","volumechange","volume","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","mseSourceBufferFull","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","webcodecsConfigureError","webcodecsDecodeError","webcodecsWidthOrHeightChange","mediaSourceH265NotSupport","mediaSourceFull","mediaSourceAppendBufferError","mediaSourceBufferListLarge","mediaSourceAppendBufferEndTimeout","wasmDecodeError","webglAlignmentError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","CANVAS_RENDER_TYPE","webcodecs","webgl","offscreen","ENCODED_VIDEO_TYPE","key","delta","MP4_CODECS","avc","hev","MEDIA_SOURCE_STATE","ended","closed","AUDIO_SYNC_VIDEO_DIFF","HOT_KEY","esc","arrowUp","arrowDown","WCS_ERROR","keyframeIsRequiredError","canNotDecodeClosedCodec","FETCH_ERROR","abortError1","abortError2","abort","FRAME_HEADER_EX","PACKET_TYPE_EX","PACKET_TYPE_SEQ_START","PACKET_TYPE_FRAMES","PACKET_TYPE_FRAMESX","FRAME_TYPE_EX","FT_KEY","FT_INTER","Debug","constructor","master","name","_opt","args","console","warn","Events","destroys","proxy","bind","target","callback","option","Array","isArray","map","item","addEventListener","removeEventListener","push","forEach","event","player","Object","defineProperty","get","clientRect","$container","getBoundingClientRect","width","Math","max","clientWidth","height","clientHeight","rect","noop","supportOffscreen","$canvas","transferControlToOffscreen","supportOffscreenV2","OffscreenCanvas","createContextGL","gl","validContextNames","nameIndex","length","contextName","contextOptions","preserveDrawingBuffer","getContext","e","getParameter","dataURLToFile","dataURL","arr","split","bstr","atob","type","replace","n","u8arr","Uint8Array","charCodeAt","File","now","Date","getTime","WebAssembly","instantiate","module","Module","of","Instance","clamp","num","a","b","min","setStyle","element","value","keys","style","getStyle","numberType","getComputedStyle","getPropertyValue","parseFloat","getNowTime","calculationRate","totalSize","lastTime","size","thisTime","diffTime","isMobile","test","window","navigator","userAgent","toLowerCase","isPad","isAndroid","UA","supportWCS","uuid16","c","r","random","v","toString","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","codec","description","isFullScreen","screenfull","isFullscreen","bpsSize","parseInt","isNaN","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","document","createElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","supportMediaStreamTrack","MediaStreamTrackGenerator","isEmpty","undefined","isBoolean","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","formatTimeTips","time","hour","floor","sec","round","getTarget","srcElement","isWebglRenderSupport","getBrowser","UserAgent","browserInfo","browserArray","IE","ActiveXObject","Chrome","indexOf","Firefox","Opera","Safari","Edge","QQBrowser","WeixinBrowser","i","versions","match","mt","mimeTypes","version","closeVideoFrame","removeElement","parentNode","removeChild","hevcEncoderNalePacketNotLength","oneNALBuffer","isIframe","idrBit","nIdrBit","tmp","arrayBuffer","byteLength","set","isFalse","getElementDataset","dataset","getAttribute","setElementDataset","setAttribute","removeElementDataset","removeAttribute","screenfullChange","emit","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","stringList","includes","JSON","stringify","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","evts","liveEvents","len","vertexShaderScript","join","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","w","y","u","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","resetInit","encType","encTypeCode","$videoElement","updateVideoInfo","clearView","_global","global","this","bom","opts","autoBom","Blob","String","fromCharCode","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","status","click","node","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","prototype","URL","webkitURL","createElementNS","rel","href","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","isControlBarShow","resizeWidth","resizeHeight","wScale","hScale","scale","transform","VideoLoader","muted","disablePictureInPicture","poster","_delayPlay","trackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","canvasContext","fixChromeVideoFlashBug","_play","timeStamp","isPlaying","currentTime","src","stop","browser","backdropFilter","translateZ","readyState","_getVideoReadyState","isNow","$video","canvas","videoWidth","videoHeight","write","objectFill","objectFit","paused","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","_prevVolume","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isMute","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","setValueAtTime","disconnect","state","resume","suspend","isStateRunning","isStateSuspended","Audio","FetchLoader","abortController","AbortController","streamRate","rate","fetchStream","demux","_times","fetchOptions","assign","signal","headers","res","getReader","fetchNext","read","done","dispatch","errorString","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","RecordRTCLoader","fileName","fileType","isRecording","recordingInterval","_reset","setFileName","recordTime","startRecord","mimeType","onTimeStamp","timestamp","disableLogs","stream","captureStream","audioStream","getAudioTracks","audioTrack","enabled","addTrack","recorder","RecordRTC","startRecording","setInterval","stopRecordAndSave","stopRecording","getBlob","clearInterval","Recorder","DecoderWorker","decoderWorker","Worker","_initDecoderWorker","postMessage","cmd","terminate","onmessage","_initWork","code","handleRender","updateStats","buf","delay","handlePlayToRenderTimes","emitError","decodeVideo","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","mseDecoder","getSourceBufferUpdating","payload","_doDecoderDecode","_doDecode","cts","pushBuffer","webcodecsDecoder","_decodeEnhancedH265Video","flags","frameTypeEx","packetEx","codecId","ArrayBuffer","tmp32","Uint32Array","isAV1","extraData","payloadBuffer","_isEnhancedH265Header","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp8","t","abps","vbps","need","next","combine","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","Demux","ExpGolomb","uint8array","TAG","_buffer","_buffer_index","_total_bytes","_total_bits","_current_word","_current_word_bits_left","_fillCurrentWord","buffer_bytes_left","bytes_read","word","readBits","bits","bits_need_left","bits_read_next","result2","readBool","readByte","_skipLeadingZero","zero_count","readUEG","leading_zeros","readSEG","SPSParser","_ebsp2rbsp","src_length","dst","dst_idx","parseSPS","rbsp","gb","profile_idc","level_idc","profile_string","getProfileString","level_string","getLevelString","chroma_format_idc","chroma_format","chroma_format_table","bit_depth","scaling_list_count","_skipScalingList","pic_order_cnt_type","num_ref_frames_in_pic_order_cnt_cycle","ref_frames","pic_width_in_mbs_minus1","pic_height_in_map_units_minus1","frame_mbs_only_flag","frame_crop_left_offset","frame_crop_right_offset","frame_crop_top_offset","frame_crop_bottom_offset","frame_cropping_flag","sar_width","sar_height","fps_fixed","fps_num","fps_den","vui_parameters_present_flag","aspect_ratio_idc","sar_w_table","sar_h_table","num_units_in_tick","time_scale","sarScale","crop_unit_x","crop_unit_y","sub_wc","sub_hc","codec_width","codec_height","present_width","ceil","chroma_format_string","getChromaFormatString","frame_rate","fixed","sar_ratio","codec_size","present_size","count","last_scale","next_scale","delta_scale","chroma","parseAVCDecoderConfigurationRecord","meta","avcProfile","_naluLengthSize","spsCount","offset","getUint16","sps","codecWidth","codecHeight","presentWidth","presentHeight","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","timescale","ppsCount","videoType","WebcodecsDecoder","hasInit","isDecodeFirstIIframe","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","isDecodeStateClosed","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","display","overflow","pointerEvents","zIndex","playerWidth","playerHeight","contentDocument","defaultView","screenfullH5Control","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$qualityMenu","$volume","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","resumeAudioAfterPause","$volumePanelWrap","lastVolume","_lastVolume","isVolumeDroging","$recordingStop","startDelayControlHidden","stopDelayControlHidden","delayHiddenTimeout","clearTimeout","addHotkey","tag","activeElement","tagName","toUpperCase","editable","keyCode","preventDefault","Control","template","property","observer","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","toggleBar","getBarIsShow","nodeName","visibilityState","_isPlayingBeforePageHidden","enableWakeLock","MP4","types","avc1","hvc1","hvcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","hasOwnProperty","constants","FTYP","STSD_PREFIX","STTS","STSC","STCO","STSZ","HDLR_VIDEO","HDLR_AUDIO","DREF","SMHD","VMHD","box","datas","call","arguments","arrayCount","generateInitSegment","duration","trackId","id","xmhd","channelCount","audioSampleRate","configSize","concat","avcc","track","baseMediaDecodeTime","sequenceNumber","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","isNonSync","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","firstRenderTime","mediaSourceAppendBufferFull","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","dts","_decodeVideo","metaData","metaBox","appendBuffer","bytes","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","abortSourceBuffer","removeSourceBuffer","endOfStream","dropSourceBuffer","isDropping","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","dataURI","isEnabled","wakeLock","err","disable","hidden","Promise","resolve","playPromise","release","Player","container","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_checkStatsInterval","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","clearStatsInterval","releaseWakeLock","resetStats","updateOption","contains","isDebug","reject","checkLoadingTimeout","checkStatsInterval","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","_nowTime","getOption","errorType","getControlBarShow","toggleControlBar","isShow","Jessibuca","Error","_checkHasCreated","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_destroyed","_initPlayer","_bindEvents","_resetPlayer","isDestroyed","setDebug","cancelMute","audioResume","setScaleMode","playOptions","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen","gbProV"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jessibuca.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/constant/index.js","../../src/utils/debug.js","../../src/utils/events.js","../../src/player/property.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/player/events.js","../../src/utils/emitter.js","../../src/utils/webgl.js","../../src/video/commonLoader.js","../../src/utils/file-save.js","../../src/video/canvasLoader.js","../../src/video/videoLoader.js","../../src/video/index.js","../../src/audio/audioContextLoader.js","../../src/audio/index.js","../../src/stream/fetchLoader.js","../../src/stream/websocketLoader.js","../../src/stream/index.js","../../node_modules/recordrtc/RecordRTC.js","../../src/recorder/recordRTCLoader.js","../../src/recorder/index.js","../../src/worker/index.js","../../src/demux/commonLoader.js","../../src/demux/flvLoader.js","../../src/demux/m7sLoader.js","../../src/demux/index.js","../../src/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/decoder/webcodecs.js","../../src/control/icons.js","../../src/control/template.js","../../src/control/observer.js","../../src/control/property.js","../../src/control/events.js","../../node_modules/style-inject/dist/style-inject.es.js","../../src/control/hotkey.js","../../src/control/index.js","../../src/player/observer.js","../../src/remux/fmp4-generator.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\nexport const VERSION = '__VERSION__'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError:'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.log(`Jb: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.warn(`Jb: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n console.error(`Jb: [${name}]`, ...args);\n };\n }\n}\n","export default class Events {\n constructor(master) {\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.master = master;\n }\n\n proxy(target, name, callback, option = {}) {\n if (!target) {\n return;\n }\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option));\n }\n target.addEventListener(name, callback, option);\n const destroy = () => target.removeEventListener(name, callback, option);\n this.destroys.push(destroy);\n return destroy;\n }\n\n destroy() {\n this.master.debug && this.master.debug.log(`Events`, 'destroy');\n this.destroys.forEach(event => event());\n }\n}\n","export default (player) => {\n Object.defineProperty(player, 'rect', {\n get: () => {\n const clientRect = player.$container.getBoundingClientRect()\n clientRect.width = Math.max(clientRect.width, player.$container.clientWidth);\n clientRect.height = Math.max(clientRect.height, player.$container.clientHeight);\n return clientRect;\n },\n });\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(key => {\n Object.defineProperty(player, key, {\n get: () => {\n return player.rect[key];\n },\n });\n });\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\n\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {getTarget, isMobile, setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = (e) => {\n if (getTarget(e) === player.$container) {\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n\n // 如果不是fullscreen,则触发下 resize 方法\n if (!player.fullscreen) {\n player.resize();\n } else {\n if (player._opt.useMSE) {\n player.resize();\n }\n }\n }\n };\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n //\n player.on(EVENTS.decoderWorkerInit, () => {\n player.debug.log('player', 'has loaded');\n player.loaded = true;\n })\n\n //\n player.on(EVENTS.play, () => {\n player.loading = false;\n })\n\n //\n player.on(EVENTS.fullscreen, (value) => {\n if (value) {\n try {\n screenfull.request(player.$container).then(() => {\n\n }).catch((e) => {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n });\n\n } catch (e) {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n }\n } else {\n try {\n screenfull.exit().then(() => {\n if (player.webFullscreen) {\n player.webFullscreen = false;\n }\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n if (isMobile()) {\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('jessibuca-fullscreen-web')\n } else {\n player.$container.classList.remove('jessibuca-fullscreen-web')\n }\n //\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n })\n }\n\n\n //\n player.on(EVENTS.resize, () => {\n player.video && player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n const stringList = [\n EVENTS.stats,\n EVENTS.playToRenderTimes,\n EVENTS.audioInfo,\n EVENTS.videoInfo\n ]\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\n }\n\n if (stringList.includes(key)) {\n value = JSON.stringify(value)\n }\n\n player.debug.log('player events', EVENTS[key], value);\n })\n })\n\n Object.keys(EVENTS_ERROR).forEach((key) => {\n player.on(EVENTS_ERROR[key], (value) => {\n player.debug.log('player event error', EVENTS_ERROR[key], value);\n })\n })\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({fn, ctx});\n return this;\n }\n\n once(name, fn, ctx) {\n const self = this;\n\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {});\n\n if (!name) {\n Object.keys(e).forEach((key) => {\n delete e[key];\n })\n delete this.e\n return;\n }\n\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n return this;\n }\n}\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor() {\n super();\n this.init = false;\n }\n\n resetInit() {\n this.init = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n }\n destroy() {\n this.resetInit();\n this.player.$container.removeChild(this.$videoElement);\n this.off();\n }\n\n //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[data.encTypeCode];\n this.videoInfo.encTypeCode = data.encTypeCode;\n }\n\n if (data.width) {\n this.videoInfo.width = data.width;\n }\n\n if (data.height) {\n this.videoInfo.height = data.height;\n }\n\n // video 基本信息\n if (this.videoInfo.encType && this.videoInfo.height && this.videoInfo.width && !this.init) {\n this.player.emit(EVENTS.videoInfo, this.videoInfo);\n this.init = true;\n }\n }\n\n play() {\n\n }\n\n pause() {\n\n }\n\n clearView() {\n\n }\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom(blob, opts) {\n if (typeof opts === 'undefined') opts = {autoBom: false}\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = {autoBom: !opts}\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type})\n }\n return blob\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {\n }\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs() { /* noop */\n }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n // Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561)\n var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () {\n URL.revokeObjectURL(a.href)\n }, 4E4) // 40s\n setTimeout(function () {\n click(a)\n }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () {\n click(a)\n })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url)\n }, 4E4) // 40s\n }\n }\n)\n\n\nexport default saveAs\n","import Emitter from \"../utils/emitter\";\nimport {\n closeVideoFrame,\n createContextGL,\n createEmptyImageBitmap,\n dataURLToFile,\n downloadImg,\n isMobile,\n now,\n supportOffscreen\n} from \"../utils\";\nimport createWebGL from \"../utils/webgl\";\nimport {CANVAS_RENDER_TYPE, CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class CanvasVideoLoader extends CommonLoader {\n\n constructor(player) {\n super()\n this.player = player;\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.style.position = \"absolute\";\n $canvasElement.style.top = 0;\n $canvasElement.style.left = 0;\n this.$videoElement = $canvasElement;\n player.$container.appendChild(this.$videoElement);\n\n this.context2D = null;\n this.contextGl = null;\n this.contextGlRender = null;\n this.contextGlDestroy = null;\n this.bitmaprenderer = null;\n this.renderType = null;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n //\n this._initCanvasRender();\n this.player.debug.log('CanvasVideo', 'init');\n }\n\n async destroy() {\n super.destroy();\n if (this.contextGl) {\n this.contextGl = null;\n }\n if (this.context2D) {\n this.context2D = null;\n }\n if (this.contextGlRender) {\n this.contextGlDestroy && this.contextGlDestroy();\n this.contextGlDestroy = null;\n this.contextGlRender = null;\n }\n if (this.bitmaprenderer) {\n this.bitmaprenderer = null;\n }\n\n this.renderType = null;\n\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n if(this.contextGl){\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\n }\n else {\n this.player.debug.error(`CanvasVideoLoader`, 'init webgl fail');\n }\n }\n\n _initContext2D() {\n this.context2D = this.$videoElement.getContext('2d');\n }\n\n\n // 渲染类型\n _initCanvasRender() {\n if (this.player._opt.useWCS && !this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.webcodecs;\n this._initContext2D();\n } else if (this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.offscreen;\n this._bindOffscreen();\n } else {\n this.renderType = CANVAS_RENDER_TYPE.webgl;\n this._initContextGl();\n }\n }\n\n _supportOffscreen() {\n return supportOffscreen(this.$videoElement) && this.player._opt.useOffscreen;\n }\n\n //\n _bindOffscreen() {\n this.bitmaprenderer = this.$videoElement.getContext('bitmaprenderer');\n }\n\n initCanvasViewSize() {\n this.$videoElement.width = this.videoInfo.width;\n this.$videoElement.height = this.videoInfo.height;\n this.resize();\n }\n\n //\n render(msg) {\n this.player.videoTimestamp = msg.ts;\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n this.bitmaprenderer.transferFromImageBitmap(msg.buffer);\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n // can use createImageBitmap in wexin\n this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\n closeVideoFrame(msg.videoFrame);\n break;\n }\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const dataURL = this.$videoElement.toDataURL(formatType[format] || formatType.png, encoderOptions);\n\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename);\n }\n }\n\n }\n\n //\n clearView() {\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n createEmptyImageBitmap(this.$videoElement.width, this.$videoElement.height).then((imageBitMap) => {\n this.bitmaprenderer.transferFromImageBitmap(imageBitMap);\n })\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n this.context2D.clearRect(0, 0, this.$videoElement.width, this.$videoElement.height)\n break;\n }\n }\n\n resize() {\n this.player.debug.log('canvasVideo', 'resize');\n const option = this.player._opt;\n let width = this.player.width;\n let height = this.player.height;\n if (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n const rotate = option.rotate;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n if (rotate === 270 || rotate === 90) {\n resizeWidth = this.$videoElement.height;\n resizeHeight = this.$videoElement.width;\n }\n\n const wScale = width / resizeWidth;\n const hScale = height / resizeHeight;\n\n let scale = wScale > hScale ? hScale : wScale;\n //\n if (!option.isResize) {\n if (wScale !== hScale) {\n scale = wScale + ',' + hScale;\n }\n }\n //\n if (option.isFullResize) {\n scale = wScale > hScale ? wScale : hScale;\n }\n let transform = \"scale(\" + scale + \")\";\n\n if (rotate) {\n transform += ' rotate(' + rotate + 'deg)'\n }\n\n this.$videoElement.style.transform = transform;\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport {dataURLToFile, downloadImg, getBrowser, isAndroid, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n const $canvasElement = document.createElement('canvas');\n $videoElement.muted = true;\n $videoElement.disablePictureInPicture = true;\n if (isAndroid()) {\n // default no poster\n $videoElement.poster = 'noposter';\n }\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n this._delayPlay = false;\n player.$container.appendChild($videoElement);\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n const _opt = this.player._opt;\n if (_opt.useWCS && _opt.wcsUseVideoRender) {\n this.trackGenerator = new MediaStreamTrackGenerator({kind: 'video'});\n $videoElement.srcObject = new MediaStream([this.trackGenerator]);\n this.vwriter = this.trackGenerator.writable.getWriter();\n }\n this.$videoElement = $videoElement;\n this.$canvasElement = $canvasElement;\n this.canvasContext = $canvasElement.getContext('2d');\n this.fixChromeVideoFlashBug();\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', `canplay`);\n if (this._delayPlay) {\n this.player.debug.log('Video', `canplay and _delayPlay is true and next play()`);\n this._play();\n }\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n // this.player.emit(EVENTS.videoWaiting);\n this.player.debug.log('Video', 'waiting');\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n const timeStamp = parseInt(event.timeStamp, 10);\n this.player.emit(EVENTS.timeUpdate, timeStamp)\n // check is pause;\n if (!this.isPlaying() && this.init) {\n this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`);\n this.$videoElement.play();\n }\n })\n\n this.player.debug.log('Video', 'init');\n }\n\n async destroy() {\n super.destroy();\n this.$canvasElement = null;\n this.canvasContext = null;\n if (this.$videoElement) {\n this.$videoElement.pause();\n this.$videoElement.currentTime = 0;\n this.$videoElement.src = ''\n this.$videoElement.removeAttribute('src');\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator.stop();\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n await this.vwriter.close();\n this.vwriter = null;\n }\n this.player.debug.log('Video', 'destroy');\n }\n\n fixChromeVideoFlashBug() {\n const browser = getBrowser();\n const type = browser.type.toLowerCase();\n if (type === 'chrome' || type === 'edge') {\n const $container = this.player.$container;\n $container.style.backdropFilter = 'blur(0px)';\n $container.style.translateZ = '0';\n }\n }\n\n play() {\n if (this.$videoElement) {\n const readyState = this._getVideoReadyState();\n this.player.debug.log('Video', `play and readyState: ${readyState}`);\n if (readyState === 0) {\n this.player.debug.warn('Video', 'readyState is 0 and set _delayPlay to true');\n this._delayPlay = true;\n return;\n }\n this._play();\n }\n }\n\n _getVideoReadyState() {\n let result = 0;\n if (this.$videoElement) {\n result = this.$videoElement.readyState;\n }\n return result;\n }\n\n _play() {\n this.$videoElement && this.$videoElement.play().then(() => {\n this._delayPlay = false;\n this.player.debug.log('Video', '_play success');\n setTimeout(() => {\n if (!this.isPlaying()) {\n this.player.debug.warn('Video', `play failed and retry play`)\n this._play();\n }\n }, 100)\n\n }).catch((e) => {\n this.player.debug.error('Video', '_play error', e);\n })\n }\n\n pause(isNow) {\n // 预防\n // https://developer.chrome.com/blog/play-request-was-interrupted/\n // http://alonesuperman.com/?p=23\n if (isNow) {\n this.$videoElement && this.$videoElement.pause();\n } else {\n setTimeout(() => {\n this.$videoElement && this.$videoElement.pause();\n }, 100)\n }\n }\n\n clearView() {\n\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const $video = this.$videoElement;\n let canvas = this.$canvasElement;\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n this.canvasContext.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(formatType[format] || formatType.png, encoderOptions);\n // release memory\n this.canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = 0;\n canvas.height = 0;\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL);\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename)\n }\n }\n\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n //\n render(msg) {\n if (this.vwriter) {\n this.vwriter.write(msg.videoFrame);\n }\n }\n\n resize() {\n let width = this.player.width;\n let height = this.player.height;\n const option = this.player._opt;\n const rotate = option.rotate;\n if (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n\n this.$videoElement.width = width;\n this.$videoElement.height = height;\n\n if (rotate === 270 || rotate === 90) {\n this.$videoElement.width = height;\n this.$videoElement.height = width;\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n let objectFill = 'contain';\n\n // 默认是true\n // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n\n // 视频画面完全填充canvas区域,画面会被拉伸\n if (!option.isResize) {\n objectFill = 'fill';\n }\n\n // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n if (option.isFullResize) {\n objectFill = 'none';\n }\n this.$videoElement.style.objectFit = objectFill;\n this.$videoElement.style.transform = 'rotate(' + rotate + 'deg)';\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n isPlaying() {\n return this.$videoElement && !this.$videoElement.paused;\n }\n}\n","import CanvasVideoLoader from './canvasLoader';\nimport VideoLoader from \"./videoLoader\";\n\nexport default class Video {\n constructor(player) {\n const Loader = Video.getLoaderFactory(player._opt);\n return new Loader(player);\n }\n\n static getLoaderFactory(opt) {\n if (opt.useMSE || (opt.useWCS && !opt.useOffscreen && opt.wcsUseVideoRender)) {\n return VideoLoader;\n } else {\n return CanvasVideoLoader;\n }\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {AUDIO_ENC_TYPE, AUDIO_SYNC_VIDEO_DIFF, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\nimport {clamp, noop} from \"../utils\";\n\nexport default class AudioContextLoader extends Emitter {\n constructor(player) {\n super();\n this.bufferList = [];\n this.player = player;\n this.scriptNode = null;\n this.hasInitScriptNode = false;\n this.audioContextChannel = null;\n\n this.audioContext = new (window.AudioContext || window.webkitAudioContext)();\n //\n this.gainNode = this.audioContext.createGain();\n // Get an AudioBufferSourceNode.\n // This is the AudioNode to use when we want to play an AudioBuffer\n const source = this.audioContext.createBufferSource();\n // set the buffer in the AudioBufferSourceNode\n source.buffer = this.audioContext.createBuffer(1, 1, 22050);\n // connect the AudioBufferSourceNode to the\n // destination so we can hear the sound\n source.connect(this.audioContext.destination);\n // noteOn as start\n // start the source playing\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n this.audioBufferSourceNode = source;\n //\n this.mediaStreamAudioDestinationNode = this.audioContext.createMediaStreamDestination();\n //\n this.audioEnabled(true);\n // default setting 0\n this.gainNode.gain.value = 0;\n this._prevVolume = null;\n\n this.playing = false;\n //\n this.audioSyncVideoOption = {\n diff: null\n };\n\n\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n this.init = false;\n this.hasAudio = false;\n\n // update\n this.on(EVENTS.videoSyncAudio, (options) => {\n // this.player.debug.log('AudioContext', `videoSyncAudio , audioTimestamp: ${options.audioTimestamp},videoTimestamp: ${options.videoTimestamp},diff:${options.diff}`)\n this.audioSyncVideoOption = options;\n })\n\n this.player.debug.log('AudioContext', 'init');\n }\n\n resetInit() {\n this.init = false;\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n }\n\n\n async destroy() {\n this.closeAudio();\n this.resetInit();\n if(this.audioContext){\n await this.audioContext.close();\n this.audioContext = null;\n }\n\n this.gainNode = null;\n this.hasAudio = false;\n this.playing = false;\n if (this.scriptNode) {\n this.scriptNode.onaudioprocess = noop;\n this.scriptNode = null;\n }\n this.audioBufferSourceNode = null;\n this.mediaStreamAudioDestinationNode = null;\n this.hasInitScriptNode = false;\n this.audioSyncVideoOption = {\n diff: null\n };\n this._prevVolume = null;\n this.off();\n this.player.debug.log('AudioContext', 'destroy');\n }\n\n updateAudioInfo(data) {\n if (data.encTypeCode) {\n this.audioInfo.encType = AUDIO_ENC_TYPE[data.encTypeCode];\n this.audioInfo.encTypeCode = data.encTypeCode;\n }\n\n if (data.channels) {\n this.audioInfo.channels = data.channels;\n }\n\n if (data.sampleRate) {\n this.audioInfo.sampleRate = data.sampleRate;\n }\n\n // audio 基本信息\n if (this.audioInfo.sampleRate && this.audioInfo.channels && this.audioInfo.encType && !this.init) {\n this.player.emit(EVENTS.audioInfo, this.audioInfo);\n this.init = true;\n }\n }\n\n //\n get isPlaying() {\n return this.playing;\n }\n\n get isMute() {\n return this.gainNode.gain.value === 0;\n }\n\n get volume() {\n return this.gainNode.gain.value;\n }\n\n get bufferSize() {\n return this.bufferList.length;\n }\n\n\n initScriptNode() {\n this.playing = true;\n\n if (this.hasInitScriptNode) {\n return;\n }\n const channels = this.audioInfo.channels;\n\n const scriptNode = this.audioContext.createScriptProcessor(1024, 0, channels);\n // tips: if audio isStateSuspended onaudioprocess method not working\n scriptNode.onaudioprocess = (audioProcessingEvent) => {\n const outputBuffer = audioProcessingEvent.outputBuffer;\n\n if (this.bufferList.length && this.playing) {\n // just for wasm\n if (!this.player._opt.useWCS && !this.player._opt.useMSE && this.player._opt.wasmDecodeAudioSyncVideo) {\n // audio > video\n // wait\n if (this.audioSyncVideoOption.diff > AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`)\n // wait\n return;\n }\n // audio < video\n // throw away then chase video\n else if (this.audioSyncVideoOption.diff < -AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`)\n\n //\n let bufferItem = this.bufferList.shift();\n //\n while ((bufferItem.ts - this.player.videoTimestamp < -AUDIO_SYNC_VIDEO_DIFF) && this.bufferList.length > 0) {\n // this.player.debug.warn('AudioContext', `audioSyncVideoOption less than inner ts is:${bufferItem.ts}, videoTimestamp is ${this.player.videoTimestamp},diff:${bufferItem.ts - this.player.videoTimestamp}`)\n bufferItem = this.bufferList.shift();\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n }\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n\n const bufferItem = this.bufferList.shift();\n\n // update audio time stamp\n if (bufferItem && bufferItem.ts) {\n this.player.audioTimestamp = bufferItem.ts;\n }\n\n for (let channel = 0; channel < channels; channel++) {\n const b = bufferItem.buffer[channel]\n const nowBuffering = outputBuffer.getChannelData(channel);\n for (let i = 0; i < 1024; i++) {\n nowBuffering[i] = b[i] || 0\n }\n }\n }\n }\n\n scriptNode.connect(this.gainNode);\n this.scriptNode = scriptNode;\n this.gainNode.connect(this.audioContext.destination);\n this.gainNode.connect(this.mediaStreamAudioDestinationNode);\n this.hasInitScriptNode = true;\n }\n\n mute(flag) {\n if (flag) {\n // if (!this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0);\n this.clear();\n } else {\n // if (this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0.5);\n }\n }\n\n setVolume(volume) {\n volume = parseFloat(volume).toFixed(2);\n if (isNaN(volume)) {\n return;\n }\n this.audioEnabled(true);\n volume = clamp(volume, 0, 1);\n if (this._prevVolume === null) {\n this.player.emit(EVENTS.mute, volume === 0);\n } else {\n if (this._prevVolume === 0 && volume > 0) {\n this.player.emit(EVENTS.mute, false);\n } else if (this._prevVolume > 0 && volume === 0) {\n this.player.emit(EVENTS.mute, true);\n }\n }\n this.gainNode.gain.value = volume;\n this.gainNode.gain.setValueAtTime(volume, this.audioContext.currentTime);\n this.player.emit(EVENTS.volumechange, this.player.volume);\n this.player.emit(EVENTS.volume, this.player.volume); // outer\n // save last volume\n this._prevVolume = volume;\n }\n\n closeAudio() {\n if (this.hasInitScriptNode) {\n this.scriptNode && this.scriptNode.disconnect(this.gainNode);\n this.gainNode && this.gainNode.disconnect(this.audioContext.destination);\n this.gainNode && this.gainNode.disconnect(this.mediaStreamAudioDestinationNode);\n }\n this.clear();\n }\n\n // 是否播放。。。\n audioEnabled(flag) {\n if (flag) {\n if (this.audioContext.state === 'suspended') {\n // resume\n this.audioContext.resume();\n }\n } else {\n if (this.audioContext.state === 'running') {\n // suspend\n this.audioContext.suspend();\n }\n }\n }\n\n isStateRunning() {\n return this.audioContext.state === 'running';\n }\n\n isStateSuspended() {\n return this.audioContext.state === 'suspended';\n }\n\n clear() {\n this.bufferList = [];\n }\n\n play(buffer, ts) {\n // if is mute\n if (this.isMute) {\n return;\n }\n\n this.hasAudio = true;\n\n this.bufferList.push({\n buffer,\n ts\n });\n\n if (this.bufferList.length > 20) {\n this.player.debug.warn('AudioContext', `bufferList is large: ${this.bufferList.length}`)\n\n // out of memory\n if (this.bufferList.length > 50) {\n this.bufferList.shift();\n }\n }\n // this.player.debug.log('AudioContext', `bufferList is ${this.bufferList.length}`)\n }\n\n pause() {\n this.audioSyncVideoOption = {\n diff: null\n };\n this.playing = false;\n this.clear();\n }\n\n resume() {\n this.playing = true;\n }\n\n\n}\n","import AudioContextLoader from \"./audioContextLoader\";\n\nexport default class Audio {\n constructor(player) {\n const Loader = Audio.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return AudioContextLoader;\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FETCH_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class FetchLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.playing = false;\n\n this.abortController = new AbortController();\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n player.debug.log('FetchStream', 'init');\n }\n\n async destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options = {}) {\n const {demux} = this.player;\n this.player.debug.log('FetchStream', 'fetchStream', url, JSON.stringify(options));\n this.player._times.streamStart = now();\n const fetchOptions = Object.assign({\n signal: this.abortController.signal,\n }, {\n headers: options.headers || {}\n });\n fetch(url, fetchOptions).then((res) => {\n const reader = res.body.getReader();\n this.emit(EVENTS.streamSuccess);\n const fetchNext = () => {\n reader.read().then(({done, value}) => {\n if (done) {\n demux.close();\n } else {\n this.streamRate && this.streamRate(value.byteLength);\n demux.dispatch(value);\n fetchNext();\n }\n }\n ).catch((e) => {\n demux.close();\n const errorString = e.toString();\n // aborted a request 。\n if (errorString.indexOf(FETCH_ERROR.abortError1) !== -1) {\n return\n }\n\n if (errorString.indexOf(FETCH_ERROR.abortError2) !== -1) {\n return;\n }\n\n if (e.name === FETCH_ERROR.abort) {\n return;\n }\n\n\n this.abort();\n\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n fetchNext();\n }).catch((e) => {\n if (e.name === 'AbortError') {\n return;\n }\n demux.close();\n this.abort();\n this.emit(EVENTS_ERROR.fetchError, e)\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n\n abort() {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null\n }\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, WEBSOCKET_STATUS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class WebsocketLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.socket = null;\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.wsUrl = null;\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n\n player.debug.log('WebsocketLoader', 'init');\n }\n\n async destroy() {\n if (this.socket) {\n this.socket.close(1000, 'Client disconnecting');\n this.socket = null;\n }\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.streamRate = null;\n this.wsUrl = null;\n this.off();\n this.player.debug.log('websocketLoader', 'destroy');\n }\n\n _createWebSocket() {\n const player = this.player;\n const {\n debug,\n events: {proxy},\n demux,\n } = player;\n\n this.socket = new WebSocket(this.wsUrl);\n this.socket.binaryType = 'arraybuffer';\n proxy(this.socket, 'open', () => {\n this.emit(EVENTS.streamSuccess);\n debug.log('websocketLoader', 'socket open');\n this.socketStatus = WEBSOCKET_STATUS.open;\n });\n\n proxy(this.socket, 'message', event => {\n this.streamRate && this.streamRate(event.data.byteLength);\n this._handleMessage(event.data);\n });\n\n\n proxy(this.socket, 'close', () => {\n debug.log('websocketLoader', 'socket close');\n this.emit(EVENTS.streamEnd);\n this.socketStatus = WEBSOCKET_STATUS.close;\n });\n\n proxy(this.socket, 'error', error => {\n debug.log('websocketLoader', 'socket error');\n this.emit(EVENTS_ERROR.websocketError, error);\n this.player.emit(EVENTS.error, EVENTS_ERROR.websocketError);\n this.socketStatus = WEBSOCKET_STATUS.error;\n demux.close();\n debug.log('websocketLoader', `socket error:`, error);\n });\n }\n\n //\n _handleMessage(message) {\n const {demux} = this.player;\n if (!demux) {\n this.player.debug.warn('websocketLoader', 'websocket handle message demux is null');\n return;\n }\n demux.dispatch(message);\n }\n\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options) {\n this.player._times.streamStart = now();\n this.wsUrl = url;\n this._createWebSocket();\n }\n\n\n}\n","import FetchLoader from \"./fetchLoader\";\nimport WebsocketLoader from \"./websocketLoader\";\nimport {PLAYER_PLAY_PROTOCOL} from \"../constant\";\n\nexport default class Stream {\n constructor(player) {\n const Loader = Stream.getLoaderFactory(player._opt.protocol);\n return new Loader(player);\n }\n\n static getLoaderFactory(protocol) {\n if (protocol === PLAYER_PLAY_PROTOCOL.fetch) {\n return FetchLoader;\n } else if (protocol === PLAYER_PLAY_PROTOCOL.websocket) {\n return WebsocketLoader;\n }\n }\n}\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","import {downloadRecord, now} from \"../utils\";\nimport saveAs from \"../utils/file-save\";\nimport RecordRTC from 'recordrtc';\nimport {EVENTS, FILE_SUFFIX} from \"../constant\";\nimport Emitter from \"../utils/emitter\";\n\nexport default class RecordRTCLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.fileName = '';\n this.fileType = player._opt.recordType || FILE_SUFFIX.webm;\n this.isRecording = false;\n this.recordingTimestamp = 0;\n this.recordingInterval = null;\n player.debug.log('Recorder', 'init');\n }\n\n destroy() {\n this._reset();\n this.player.debug.log('Recorder', 'destroy');\n }\n\n setFileName(fileName, fileType) {\n this.fileName = fileName;\n\n if (FILE_SUFFIX.mp4 === fileType || FILE_SUFFIX.webm === fileType) {\n this.fileType = fileType;\n }\n }\n\n get recording() {\n return this.isRecording;\n }\n\n get recordTime() {\n return this.recordingTimestamp;\n }\n\n startRecord() {\n const debug = this.player.debug;\n const options = {\n type: 'video',\n mimeType: 'video/webm;codecs=h264',\n onTimeStamp: (timestamp) => {\n debug.log('Recorder', 'record timestamp :' + timestamp);\n },\n disableLogs: !this.player._opt.debug\n }\n\n try {\n const stream = this.player.video.$videoElement.captureStream(25);\n if (this.player.audio && this.player.audio.mediaStreamAudioDestinationNode &&\n this.player.audio.mediaStreamAudioDestinationNode.stream &&\n !this.player.audio.isStateSuspended() &&\n this.player.audio.hasAudio && this.player._opt.hasAudio) {\n const audioStream = this.player.audio.mediaStreamAudioDestinationNode.stream;\n if (audioStream.getAudioTracks().length > 0) {\n const audioTrack = audioStream.getAudioTracks()[0];\n if (audioTrack && audioTrack.enabled) {\n stream.addTrack(audioTrack);\n }\n }\n }\n this.recorder = RecordRTC(stream, options);\n } catch (e) {\n debug.error('Recorder', 'startRecord error', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.player.emit(EVENTS.recording, true);\n this.recorder.startRecording();\n debug.log('Recorder', 'start recording');\n this.player.emit(EVENTS.recordStart);\n this.recordingInterval = window.setInterval(() => {\n this.recordingTimestamp += 1;\n this.player.emit(EVENTS.recordingTimestamp, this.recordingTimestamp);\n }, 1000);\n }\n }\n\n stopRecordAndSave() {\n if (!this.recorder || !this.isRecording) {\n return;\n }\n this.recorder.stopRecording(() => {\n this.player.debug.log('Recorder', 'stop recording');\n this.player.emit(EVENTS.recordEnd)\n const fileName = (this.fileName || now()) + '.' + (this.fileType || FILE_SUFFIX.webm)\n saveAs(this.recorder.getBlob(), fileName)\n this._reset();\n this.player.emit(EVENTS.recording, false);\n })\n }\n\n _reset() {\n this.isRecording = false;\n this.recordingTimestamp = 0;\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n this.fileName = null;\n if (this.recordingInterval) {\n clearInterval(this.recordingInterval);\n }\n this.recordingInterval = null;\n }\n\n\n}\n","import RecordRTCLoader from \"./recordRTCLoader\";\n\nexport default class Recorder {\n constructor(player) {\n const Loader = Recorder.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return RecordRTCLoader;\n }\n}\n","import {EVENTS, EVENTS_ERROR, MEDIA_TYPE, WASM_ERROR, WORKER_CMD_TYPE, WORKER_SEND_TYPE} from \"../constant\";\nimport {isWebglRenderSupport, now} from \"../utils\";\n\nexport default class DecoderWorker {\n constructor(player) {\n this.player = player;\n this.decoderWorker = new Worker(player._opt.decoder)\n this._initDecoderWorker();\n player.debug.log('decoderWorker', 'init')\n }\n\n async destroy() {\n this.decoderWorker.postMessage({cmd: WORKER_SEND_TYPE.close})\n this.decoderWorker.terminate();\n this.decoderWorker = null;\n this.player.debug.log(`decoderWorker`, 'destroy');\n }\n\n _initDecoderWorker() {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n this.decoderWorker.onmessage = (event) => {\n const msg = event.data;\n switch (msg.cmd) {\n case WORKER_CMD_TYPE.init:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.init);\n if (!this.player.loaded) {\n this.player.emit(EVENTS.load);\n }\n this.player.emit(EVENTS.decoderWorkerInit);\n this._initWork();\n break;\n case WORKER_CMD_TYPE.videoCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.videoCode, msg.code);\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n this.player.video.updateVideoInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.audioCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.audioCode, msg.code);\n this.player.audio && this.player.audio.updateAudioInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.initVideo:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initVideo, `width:${msg.w},height:${msg.h}`);\n this.player.video.updateVideoInfo({\n width: msg.w,\n height: msg.h\n })\n if (!this.player._opt.openWebglAlignment && !isWebglRenderSupport(msg.w)) {\n this.player.emit(EVENTS_ERROR.webglAlignmentError);\n return;\n }\n\n this.player.video.initCanvasViewSize();\n break;\n case WORKER_CMD_TYPE.initAudio:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initAudio, `channels:${msg.channels},sampleRate:${msg.sampleRate}`);\n if (this.player.audio) {\n this.player.audio.updateAudioInfo(msg);\n this.player.audio.initScriptNode(msg);\n }\n break;\n case WORKER_CMD_TYPE.render:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.render, `msg ts:${msg.ts}`);\n this.player.handleRender();\n this.player.video.render(msg);\n this.player.emit(EVENTS.timeUpdate, msg.ts)\n this.player.updateStats({fps: true, ts: msg.ts, buf: msg.delay})\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n break;\n case WORKER_CMD_TYPE.playAudio:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.playAudio, `msg ts:${msg.ts}`);\n // 只有在 playing 的时候。\n if (this.player.playing && this.player.audio) {\n this.player.audio.play(msg.buffer, msg.ts);\n }\n break;\n case WORKER_CMD_TYPE.wasmError:\n if (msg.message) {\n if (msg.message.indexOf(WASM_ERROR.invalidNalUnitSize) !== -1) {\n this.player.emitError(EVENTS_ERROR.wasmDecodeError);\n }\n }\n break;\n default:\n this.player[msg.cmd] && this.player[msg.cmd](msg);\n }\n }\n }\n\n _initWork() {\n const opt = {\n debug: this.player._opt.debug,\n useOffscreen: this.player._opt.useOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\n videoBufferDelay: this.player._opt.videoBufferDelay,\n openWebglAlignment: this.player._opt.openWebglAlignment\n }\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.init,\n opt: JSON.stringify(opt),\n sampleRate: (this.player.audio && this.player.audio.audioContext.sampleRate) || 0\n })\n }\n\n decodeVideo(arrayBuffer, ts, isIFrame) {\n\n const options = {\n type: MEDIA_TYPE.video,\n ts: Math.max(ts, 0),\n isIFrame\n }\n // this.player.debug.log('decoderWorker', 'decodeVideo', options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n decodeAudio(arrayBuffer, ts) {\n if (this.player._opt.useWCS) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else if (this.player._opt.useMSE) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else {\n this._decodeAudio(arrayBuffer, ts);\n }\n }\n\n //\n _decodeAudio(arrayBuffer, ts) {\n const options = {\n type: MEDIA_TYPE.audio,\n ts: Math.max(ts, 0)\n }\n // this.player.debug.log('decoderWorker', 'decodeAudio',options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n\n _decodeAudioNoDelay(arrayBuffer, ts) {\n // console.log('_decodeAudioNoDelay', arrayBuffer);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.audioDecode,\n buffer: arrayBuffer,\n ts: Math.max(ts, 0)\n }, [arrayBuffer.buffer])\n }\n\n\n updateWorkConfig(config) {\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.updateConfig,\n key: config.key,\n value: config.value\n })\n }\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {FRAME_HEADER_EX, FRAME_TYPE_EX, MEDIA_TYPE, PACKET_TYPE_EX} from \"../constant\";\nimport {hevcEncoderNalePacketNotLength} from \"../utils\";\n\nexport default class CommonLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n\n this.stopId = null;\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.initInterval();\n }\n\n destroy() {\n if (this.stopId) {\n clearInterval(this.stopId);\n this.stopId = null;\n }\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.off();\n this.player.debug.log('CommonDemux', 'destroy');\n }\n\n getDelay(timestamp) {\n if (!timestamp) {\n return -1\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp\n this.startTimestamp = Date.now()\n this.delay = -1;\n } else {\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay\n }\n\n resetDelay() {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n }\n\n //\n initInterval() {\n this.player.debug.log('common dumex', `init Interval`);\n let _loop = () => {\n let data;\n const videoBuffer = this.player._opt.videoBuffer;\n const videoBufferDelay = this.player._opt.videoBufferDelay;\n\n if (this.player._opt.useMSE &&\n this.player.mseDecoder &&\n this.player.mseDecoder.getSourceBufferUpdating()) {\n this.player.debug.warn('CommonDemux', `_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);\n return;\n }\n\n if (this.bufferList.length) {\n if (this.dropping) {\n // this.player.debug.log('common dumex', `is dropping`);\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n while (!data.isIFrame && this.bufferList.length) {\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n }\n // i frame\n if (data.isIFrame && this.getDelay(data.ts) <= Math.min(videoBuffer, 200)) {\n this.dropping = false;\n this._doDecoderDecode(data);\n }\n } else {\n data = this.bufferList[0];\n if (this.getDelay(data.ts) === -1) {\n // this.player.debug.log('common dumex', `delay is -1`);\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else if (this.delay > (videoBuffer + videoBufferDelay)) {\n // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true\n } else {\n data = this.bufferList[0]\n if (this.getDelay(data.ts) > videoBuffer) {\n // drop frame\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else {\n // this.player.debug.log('common dumex', `delay is ${this.delay}`);\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame, cts) {\n const player = this.player;\n let options = {\n ts: ts,\n cts: cts,\n type: type,\n isIFrame: false\n }\n // use offscreen\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else if (player._opt.useMSE) {\n // use mse\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else {\n //\n if (type === MEDIA_TYPE.video) {\n player.decoderWorker && player.decoderWorker.decodeVideo(payload, ts, isIFrame);\n } else if (type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(payload, ts);\n }\n }\n }\n }\n\n _doDecoderDecode(data) {\n const player = this.player;\n const {webcodecsDecoder, mseDecoder} = player;\n\n if (data.type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(data.payload, data.ts)\n }\n } else if (data.type === MEDIA_TYPE.video) {\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n webcodecsDecoder.decodeVideo(data.payload, data.ts, data.isIFrame);\n } else if (player._opt.useMSE) {\n mseDecoder.decodeVideo(data.payload, data.ts, data.isIFrame, data.cts);\n }\n }\n }\n\n pushBuffer(payload, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n this.bufferList.push({\n ts: options.ts,\n payload: payload,\n type: MEDIA_TYPE.audio,\n })\n } else if (options.type === MEDIA_TYPE.video) {\n this.bufferList.push({\n ts: options.ts,\n cts: options.cts,\n payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\n }\n\n _decodeEnhancedH265Video(payload, ts) {\n const flags = payload[0];\n const frameTypeEx = flags & 0x30;\n const packetEx = flags & 0x0F;\n const codecId = payload.slice(1, 5);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\n const isAV1 = String.fromCharCode(codecId[0]) == 'a';\n if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_SEQ_START) {\n if (frameTypeEx === FRAME_TYPE_EX.FT_KEY) {\n // header video info\n const extraData = payload.slice(5);\n if (!isAV1) {\n const payloadBuffer = new Uint8Array(5 + extraData.length);\n payloadBuffer.set([0x1c, 0x00, 0x00, 0x00, 0x00], 0);\n payloadBuffer.set(extraData, 5);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, 0, true, 0);\n }\n }\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMES) {\n let payloadBuffer = payload;\n let cts = 0;\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n\n if (!isAV1) {\n // h265\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n cts = tmp32[0];\n const data = payload.slice(8);\n payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMESX) {\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n const data = payload.slice(5);\n let payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, 0);\n }\n }\n\n\n _isEnhancedH265Header(flags) {\n return (flags & FRAME_HEADER_EX) === FRAME_HEADER_EX;\n }\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class FlvLoader extends CommonLoader {\n constructor(player) {\n super(player);\n this.input = this._inputFlv();\n this.flvDemux = this.dispatchFlvData(this.input);\n player.debug.log('FlvDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.input = null;\n this.flvDemux = null;\n this.player.debug.log('FlvDemux', 'destroy')\n }\n\n dispatch(data) {\n this.flvDemux(data);\n }\n\n * _inputFlv() {\n yield 9;\n const tmp = new ArrayBuffer(4)\n const tmp8 = new Uint8Array(tmp)\n const tmp32 = new Uint32Array(tmp)\n const player = this.player;\n\n while (true) {\n tmp8[3] = 0\n const t = yield 15\n const type = t[4]\n tmp8[0] = t[7]\n tmp8[1] = t[6]\n tmp8[2] = t[5]\n const length = tmp32[0]\n tmp8[0] = t[10]\n tmp8[1] = t[9]\n tmp8[2] = t[8]\n let ts = tmp32[0]\n if (ts === 0xFFFFFF) {\n tmp8[3] = t[11]\n ts = tmp32[0]\n }\n const payload = yield length\n switch (type) {\n case FLV_MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, MEDIA_TYPE.audio, ts)\n }\n }\n break\n case FLV_MEDIA_TYPE.video:\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (player._opt.hasVideo) {\n player.updateStats({\n vbps: payload.byteLength\n })\n const flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n }\n }\n break\n }\n }\n }\n\n dispatchFlvData(input) {\n let need = input.next()\n let buffer = null\n return (value) => {\n let data = new Uint8Array(value)\n if (buffer) {\n let combine = new Uint8Array(buffer.length + data.length)\n combine.set(buffer)\n combine.set(data, buffer.length)\n data = combine\n buffer = null\n }\n while (data.length >= need.value) {\n let remain = data.slice(need.value)\n need = input.next(data.slice(0, need.value))\n data = remain\n }\n if (data.length > 0) {\n buffer = data\n }\n }\n }\n\n close() {\n this.input && this.input.return(null)\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class M7sLoader extends CommonLoader {\n constructor(player) {\n super(player);\n player.debug.log('M7sDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.player.debug.log('M7sDemux', 'destroy')\n this.player = null;\n }\n\n dispatch(data) {\n const player = this.player;\n const dv = new DataView(data)\n const type = dv.getUint8(0);\n const ts = dv.getUint32(1, false);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\n switch (type) {\n case MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n const payload = new Uint8Array(data, 5)\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts)\n }\n }\n break;\n case MEDIA_TYPE.video:\n if (player._opt.hasVideo) {\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (dv.byteLength > 5) {\n const payload = new Uint8Array(data, 5);\n\n const flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, type, ts, isIframe, cts);\n }\n } else {\n this.player.debug.warn('M7sDemux', 'dispatch', 'dv byteLength is', dv.byteLength)\n }\n }\n break;\n }\n }\n\n\n}\n","import FlvLoader from \"./flvLoader\";\nimport M7sLoader from \"./m7sLoader\";\nimport {DEMUX_TYPE} from \"../constant\";\n\nexport default class Demux {\n constructor(player) {\n const Loader = Demux.getLoaderFactory(player._opt.demuxType);\n return new Loader(player);\n }\n\n static getLoaderFactory(type) {\n if (type === DEMUX_TYPE.m7s) {\n return M7sLoader;\n } else if (type === DEMUX_TYPE.flv) {\n return FlvLoader;\n }\n }\n}\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Exponential-Golomb buffer decoder\nclass ExpGolomb {\n\n constructor(uint8array) {\n this.TAG = 'ExpGolomb';\n\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n destroy() {\n this._buffer = null;\n }\n\n _fillCurrentWord() {\n let buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) {\n // throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n }\n\n let bytes_read = Math.min(4, buffer_bytes_left);\n let word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n }\n\n readBits(bits) {\n if (bits > 32) {\n // throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n }\n\n if (bits <= this._current_word_bits_left) {\n let result = this._current_word >>> (32 - bits);\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return result;\n }\n\n let result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> (32 - this._current_word_bits_left);\n let bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n\n let result2 = this._current_word >>> (32 - bits_read_next);\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n\n result = (result << bits_read_next) | result2;\n return result;\n }\n\n readBool() {\n return this.readBits(1) === 1;\n }\n\n readByte() {\n return this.readBits(8);\n }\n\n _skipLeadingZero() {\n let zero_count;\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n this._fillCurrentWord();\n return zero_count + this._skipLeadingZero();\n }\n\n readUEG() { // unsigned exponential golomb\n let leading_zeros = this._skipLeadingZero();\n return this.readBits(leading_zeros + 1) - 1;\n }\n\n readSEG() { // signed exponential golomb\n let value = this.readUEG();\n if (value & 0x01) {\n return (value + 1) >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n }\n\n}\n\nexport default ExpGolomb;\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ExpGolomb from './exp-golomb.js';\n\nclass SPSParser {\n\n static _ebsp2rbsp(uint8array) {\n let src = uint8array;\n let src_length = src.byteLength;\n let dst = new Uint8Array(src_length);\n let dst_idx = 0;\n\n for (let i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n }\n\n // 解析 SPS\n // https://zhuanlan.zhihu.com/p/27896239\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n\n gb.readByte();\n // 标识当前H.264码流的profile。\n // 我们知道,H.264中定义了三种常用的档次profile: 基准档次:baseline profile;主要档次:main profile; 扩展档次:extended profile;\n\n let profile_idc = gb.readByte(); // profile_idc\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n // 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。\n let level_idc = gb.readByte(); // level_idc\n // 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。\n gb.readUEG(); // seq_parameter_set_id\n\n let profile_string = SPSParser.getProfileString(profile_idc);\n\n let level_string = SPSParser.getLevelString(level_idc);\n\n let chroma_format_idc = 1;\n let chroma_format = 420;\n let chroma_format_table = [0, 420, 422, 444];\n let bit_depth = 8;\n\n //\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||\n profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||\n profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||\n profile_idc === 138 || profile_idc === 144) {\n //\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n gb.readUEG(); // bit_depth_chroma_minus8\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n if (gb.readBool()) { // seq_scaling_matrix_present_flag\n let scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;\n for (let i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) { // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n // 用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 +\n gb.readUEG(); // log2_max_frame_num_minus4\n // 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。\n let pic_order_cnt_type = gb.readUEG();\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n gb.readSEG(); // offset_for_non_ref_pic\n gb.readSEG(); // offset_for_top_to_bottom_field\n let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n // 用于表示参考帧的最大数目。\n let ref_frames = gb.readUEG(); // max_num_ref_frames\n // 标识位,说明frame_num中是否允许不连续的值。\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n // 用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:\n let pic_width_in_mbs_minus1 = gb.readUEG();\n // 使用PicHeightInMapUnits来度量视频中一帧图像的高度。\n // PicHeightInMapUnits并非图像明确的以像素或宏块为单位的高度,而需要考虑该宏块是帧编码或场编码。PicHeightInMapUnits的计算方式为:\n let pic_height_in_map_units_minus1 = gb.readUEG();\n // 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;\n // 该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,\n // 为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。\n let frame_mbs_only_flag = gb.readBits(1);\n if (frame_mbs_only_flag === 0) {\n // 标识位,说明是否采用了宏块级的帧场自适应编码。当该标识位为0时,不存在帧编码和场编码之间的切换;当标识位为1时,宏块可能在帧编码和场编码模式之间进行选择。\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n // 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。\n gb.readBits(1); // direct_8x8_inference_flag\n\n let frame_crop_left_offset = 0;\n let frame_crop_right_offset = 0;\n let frame_crop_top_offset = 0;\n let frame_crop_bottom_offset = 0;\n\n let frame_cropping_flag = gb.readBool();\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n let sar_width = 1, sar_height = 1;\n let fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;\n // 标识位,说明SPS中是否存在VUI信息。\n let vui_parameters_present_flag = gb.readBool();\n if (vui_parameters_present_flag) {\n if (gb.readBool()) { // aspect_ratio_info_present_flag\n let aspect_ratio_idc = gb.readByte();\n let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) { // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n if (gb.readBool()) { // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n if (gb.readBool()) { // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n if (gb.readBool()) { // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n if (gb.readBool()) { // timing_info_present_flag\n let num_units_in_tick = gb.readBits(32);\n let time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n let sarScale = 1;\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n let crop_unit_x = 0, crop_unit_y = 0;\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n let sub_wc = (chroma_format_idc === 3) ? 1 : 2;\n let sub_hc = (chroma_format_idc === 1) ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n\n let present_width = Math.ceil(codec_width * sarScale);\n\n gb.destroy();\n gb = null;\n\n\n // 解析出来的SPS 内容。\n return {\n profile_string: profile_string, // baseline, high, high10, ...\n level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth, // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format, // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n }\n\n static _skipScalingList(gb, count) {\n let last_scale = 8, next_scale = 8;\n let delta_scale = 0;\n for (let i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n last_scale = (next_scale === 0) ? last_scale : next_scale;\n }\n }\n\n // profile_idc = 66 → baseline profile;\n // profile_idc = 77 → main profile;\n // profile_idc = 88 → extended profile;\n // 在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High\n // 4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra\n static getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n case 77:\n return 'Main';\n case 88:\n return 'Extended';\n case 100:\n return 'High';\n case 110:\n return 'High10';\n case 122:\n return 'High422';\n case 244:\n return 'High444';\n default:\n return 'Unknown';\n }\n }\n\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n static getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n case 422:\n return '4:2:2';\n case 444:\n return '4:4:4';\n default:\n return 'Unknown';\n }\n }\n\n}\n\nexport default SPSParser;","import SPSParser from './h264-sps-parser.js';\n\n//\nexport function parseAVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n const v = new DataView(arrayBuffer.buffer);\n let version = v.getUint8(0); // configurationVersion\n let avcProfile = v.getUint8(1); // avcProfileIndication\n let profileCompatibility = v.getUint8(2); // profile_compatibil\n let avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return meta;\n }\n\n const _naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (_naluLengthSize !== 3 && _naluLengthSize !== 4) { // holy shit!!!\n // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${_naluLengthSize - 1}`);\n return meta;\n }\n let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n return;\n } else if (spsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);\n }\n\n let offset = 6;\n for (let i = 0; i < spsCount; i++) {\n let len = v.getUint16(offset, false); // sequenceParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n\n // Notice: Nalu without startcode header (00 00 00 01)\n let sps = new Uint8Array(arrayBuffer.buffer, offset, len);\n offset += len;\n // flv.js作者选择了自己来解析这个数据结构,也是迫不得已,因为JS环境下没有ffmpeg,解析这个结构主要是为了提取 sps和pps。虽然理论上sps允许有多个,但其实一般就一个。\n // packetTtype 为 1 表示 NALU,NALU= network abstract layer unit,这是H.264的概念,网络抽象层数据单元,其实简单理解就是一帧视频数据。\n // pps的信息没什么用,所以作者只实现了sps的分析器,说明作者下了很大功夫去学习264的标准,其中的Golomb解码还是挺复杂的,能解对不容易,我在PC和手机平台都是用ffmpeg去解析的。\n // SPS里面包括了视频分辨率,帧率,profile level等视频重要信息。\n let config = SPSParser.parseSPS(sps);\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false ||\n config.frame_rate.fps_num === 0 ||\n config.frame_rate.fps_den === 0) {\n meta.frameRate = {};\n }\n\n let fps_den = meta.frameRate.fps_den;\n let fps_num = meta.frameRate.fps_num;\n\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n let codecArray = sps.subarray(1, 4);\n\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n // codec\n meta.codec = codecString;\n }\n\n let ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n if (ppsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n return meta;\n } else if (ppsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);\n }\n\n offset++;\n for (let i = 0; i < ppsCount; i++) {\n let len = v.getUint16(offset, false); // pictureParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n let pps = new Uint8Array(arrayBuffer.buffer, offset, len);\n\n // pps is useless for extracting video information\n offset += len;\n }\n\n meta.videoType = 'avc';\n\n // meta.avcc = arrayBuffer;\n return meta;\n}\n","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE, WCS_ERROR} from \"../constant\";\nimport {parseAVCDecoderConfigurationRecord} from \"../utils/h264\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = false;\n this.isDecodeFirstIIframe = false;\n this.isInitInfo = false;\n this.decoder = null;\n this.initDecoder();\n player.debug.log('Webcodecs', 'init')\n }\n\n destroy() {\n if (this.decoder) {\n if (this.decoder.state !== 'closed') {\n this.decoder.close();\n }\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('Webcodecs', 'destroy')\n }\n\n initDecoder() {\n const _this = this;\n this.decoder = new VideoDecoder({\n output(videoFrame) {\n _this.handleDecode(videoFrame)\n },\n error(error) {\n _this.handleError(error)\n }\n })\n }\n\n handleDecode(videoFrame) {\n if (!this.isInitInfo) {\n this.player.video.updateVideoInfo({\n width: videoFrame.codedWidth,\n height: videoFrame.codedHeight\n })\n this.player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n\n this.player.handleRender();\n this.player.video.render({\n videoFrame\n })\n\n this.player.updateStats({fps: true, ts: 0, buf: this.player.demux.delay})\n }\n\n handleError(error) {\n this.player.debug.error('Webcodecs', 'VideoDecoder handleError', error)\n }\n\n decodeVideo(payload, ts, isIframe) {\n // this.player.debug.log('Webcodecs decoder', 'decodeVideo', ts, isIframe);\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n this.player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n return;\n }\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n\n const config = formatVideoDecoderConfigure(payload.slice(5));\n this.player.debug.log('Webcodecs', 'VideoDecoder configure', config)\n try {\n this.decoder.configure(config);\n }\n catch (e){\n this.player.debug.error('Webcodecs', 'VideoDecoder configure', e);\n this.player.emit(EVENTS_ERROR.webcodecsConfigureError);\n return;\n }\n this.hasInit = true;\n }\n } else {\n\n // check width or height change\n if (isIframe && payload[1] === 0) {\n let data = payload.slice(5);\n const config = parseAVCDecoderConfigurationRecord(data)\n const videoInfo = this.player.video.videoInfo;\n if (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height) {\n this.player.debug.log('Webcodecs', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.player.emit(EVENTS_ERROR.webcodecsWidthOrHeightChange)\n return;\n }\n }\n\n\n // fix : Uncaught DOMException: Failed to execute 'decode' on 'VideoDecoder': A key frame is required after configure() or flush().\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n\n if (this.isDecodeFirstIIframe) {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIframe ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n })\n this.player.emit(EVENTS.timeUpdate, ts);\n try {\n if (this.isDecodeStateClosed()) {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeStateClosed true');\n return;\n }\n this.decoder.decode(chunk);\n } catch (e) {\n this.player.debug.error('Webcodecs', 'VideoDecoder', e)\n if (e.toString().indexOf(WCS_ERROR.keyframeIsRequiredError) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n else if (e.toString().indexOf(WCS_ERROR.canNotDecodeClosedCodec) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n }\n } else {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeFirstIIframe false')\n }\n }\n }\n\n isDecodeStateClosed() {\n return this.decoder.state === 'closed';\n }\n}\n","const iconsMap = {\n play: '播放',\n pause: '暂停',\n audio: '',\n mute: '',\n screenshot: '截图',\n loading: '加载',\n fullscreen: '全屏',\n fullscreenExit: '退出全屏',\n record: '录制',\n recordStop: '停止录制',\n}\n\nexport default Object.keys(iconsMap).reduce((icons, key) => {\n icons[key] = `\n \n ${iconsMap[key] ? `${iconsMap[key]}` : ''}\n`;\n return icons;\n}, {});\n","import icons from './icons';\n\nexport default (player, control) => {\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n player.$container.classList.add('jessibuca-controls-show-auto-hide');\n }\n else {\n player.$container.classList.add('jessibuca-controls-show');\n }\n const options = player._opt;\n const operateBtns = options.operateBtns;\n\n\n player.$container.insertAdjacentHTML(\n 'beforeend',\n `\n ${options.background ? `
` : ''}\n
\n ${icons.loading}\n ${options.loadingText ? `
${options.loadingText}
` : ''}\n
\n ${options.hasControl && operateBtns.play ? `
` : ''}\n ${options.hasControl ? `\n
\n
\n
00:00:01
\n
${icons.recordStop}
\n
\n `:''}\n ${options.hasControl ? `\n
\n
\n
\n ${options.showBandwidth ? `
` : ''}\n
\n
\n ${operateBtns.audio ? `\n
\n ${icons.audio}\n ${icons.mute}\n
\n
\n
\n
\n
\n
\n
\n ` : ''}\n ${operateBtns.play ? `
${icons.play}
${icons.pause}
` : ''}\n ${operateBtns.screenshot ? `
${icons.screenshot}
` : ''}\n ${operateBtns.record ? `
${icons.record}
${icons.recordStop}
` : ''}\n ${operateBtns.fullscreen ? `
${icons.fullscreen}
${icons.fullscreenExit}
` : ''}\n
\n
\n
\n ` : ''}\n\n `\n )\n\n Object.defineProperty(control, '$poster', {\n value: player.$container.querySelector('.jessibuca-poster'),\n });\n\n Object.defineProperty(control, '$loading', {\n value: player.$container.querySelector('.jessibuca-loading'),\n });\n\n Object.defineProperty(control, '$play', {\n value: player.$container.querySelector('.jessibuca-play'),\n });\n\n Object.defineProperty(control, '$playBig', {\n value: player.$container.querySelector('.jessibuca-play-big'),\n });\n\n Object.defineProperty(control, '$recording', {\n value: player.$container.querySelector('.jessibuca-recording'),\n });\n Object.defineProperty(control, '$recordingTime', {\n value: player.$container.querySelector('.jessibuca-recording-time'),\n });\n\n Object.defineProperty(control, '$recordingStop', {\n value: player.$container.querySelector('.jessibuca-recording-stop'),\n });\n\n Object.defineProperty(control, '$pause', {\n value: player.$container.querySelector('.jessibuca-pause'),\n });\n\n Object.defineProperty(control, '$controls', {\n value: player.$container.querySelector('.jessibuca-controls'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n\n Object.defineProperty(control, '$volume', {\n value: player.$container.querySelector('.jessibuca-volume'),\n });\n\n Object.defineProperty(control, '$volumePanelWrap', {\n value: player.$container.querySelector('.jessibuca-volume-panel-wrap'),\n });\n\n Object.defineProperty(control, '$volumePanelText', {\n value: player.$container.querySelector('.jessibuca-volume-panel-text'),\n });\n\n Object.defineProperty(control, '$volumePanel', {\n value: player.$container.querySelector('.jessibuca-volume-panel'),\n });\n\n Object.defineProperty(control, '$volumeHandle', {\n value: player.$container.querySelector('.jessibuca-volume-panel-handle'),\n });\n\n Object.defineProperty(control, '$volumeOn', {\n value: player.$container.querySelector('.jessibuca-icon-audio'),\n });\n\n Object.defineProperty(control, '$volumeOff', {\n value: player.$container.querySelector('.jessibuca-icon-mute'),\n });\n\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreenExit', {\n value: player.$container.querySelector('.jessibuca-fullscreen-exit'),\n });\n\n Object.defineProperty(control, '$record', {\n value: player.$container.querySelector('.jessibuca-record'),\n });\n Object.defineProperty(control, '$recordStop', {\n value: player.$container.querySelector('.jessibuca-record-stop'),\n });\n\n Object.defineProperty(control, '$screenshot', {\n value: player.$container.querySelector('.jessibuca-screenshot'),\n });\n\n Object.defineProperty(control, '$speed', {\n value: player.$container.querySelector('.jessibuca-speed'),\n });\n}\n","import {CONTROL_HEIGHT, EVENTS} from \"../constant\";\nimport {bpsSize, formatTimeTips, getStyle, isBoolean, isMobile, setStyle} from \"../utils\";\nimport screenfull from \"screenfull\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n } = player;\n\n const object = document.createElement('object');\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.type = 'text/html';\n object.data = 'about:blank';\n\n setStyle(object, {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '-1',\n });\n\n let playerWidth = player.width;\n let playerHeight = player.height;\n\n proxy(object, 'load', () => {\n proxy(object.contentDocument.defaultView, 'resize', () => {\n if (player.width !== playerWidth || player.height !== playerHeight) {\n playerWidth = player.width;\n playerHeight = player.height;\n player.emit(EVENTS.resize);\n screenfullH5Control();\n }\n });\n });\n player.$container.appendChild(object);\n\n player.on(EVENTS.destroy, () => {\n player.$container.removeChild(object);\n })\n\n function setVolumeHandle(percentage) {\n if (percentage === 0) {\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'flex');\n setStyle(control.$volumeHandle, 'top', `${48}px`);\n } else {\n if (control.$volumeHandle && control.$volumePanel) {\n const panelHeight = getStyle(control.$volumePanel, 'height') || 60;\n const handleHeight = getStyle(control.$volumeHandle, 'height');\n const top = panelHeight - (panelHeight - handleHeight) * percentage - handleHeight;\n setStyle(control.$volumeHandle, 'top', `${top}px`);\n setStyle(control.$volumeOn, 'display', 'flex');\n setStyle(control.$volumeOff, 'display', 'none');\n }\n }\n control.$volumePanelText && (control.$volumePanelText.innerHTML = parseInt(percentage * 100))\n }\n\n player.on(EVENTS.volumechange, () => {\n setVolumeHandle(player.volume);\n });\n\n player.on(EVENTS.loading, (flag) => {\n setStyle(control.$loading, 'display', flag ? 'flex' : 'none');\n setStyle(control.$poster, 'display', 'none')\n\n if (flag) {\n setStyle(control.$playBig, 'display', 'none');\n }\n })\n\n const screenfullChange = (fullscreen) => {\n let isFullScreen = isBoolean(fullscreen) ? fullscreen : player.fullscreen\n setStyle(control.$fullscreenExit, 'display', isFullScreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', isFullScreen ? 'none' : 'flex');\n // control.autoSize();\n };\n const screenfullH5Control = () => {\n if (isMobile() && control.$controls && player._opt.useWebFullScreen) {\n setTimeout(() => {\n if (player.fullscreen) {\n // console.log(player.width, player.height);\n let translateX = player.height / 2 - player.width + CONTROL_HEIGHT / 2;\n let translateY = player.height / 2 - CONTROL_HEIGHT / 2;\n\n control.$controls.style.transform = `translateX(${-translateX}px) translateY(-${translateY}px) rotate(-90deg)`\n } else {\n control.$controls.style.transform = `translateX(0) translateY(0) rotate(0)`\n }\n\n }, 10)\n }\n }\n\n try {\n\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n\n //\n player.on(EVENTS.webFullscreen, (value) => {\n screenfullChange(value);\n screenfullH5Control();\n\n })\n\n\n player.on(EVENTS.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n setStyle(control.$recording, 'display', player.recording ? 'flex' : 'none')\n if(!player.recording && control.$recordingTime){\n control.$recordingTime.innerHTML = formatTimeTips(0);\n }\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(timestamp);\n control.$recordingTime && (control.$recordingTime.innerHTML = formatTimeTips(timestamp))\n })\n\n player.on(EVENTS.playing, (flag) => {\n setStyle(control.$play, 'display', flag ? 'none' : 'flex');\n setStyle(control.$playBig, 'display', flag ? 'none' : 'block');\n setStyle(control.$pause, 'display', flag ? 'flex' : 'none');\n setStyle(control.$screenshot, 'display', flag ? 'flex' : 'none');\n setStyle(control.$record, 'display', flag ? 'flex' : 'none');\n setStyle(control.$qualityMenu, 'display', flag ? 'flex' : 'none');\n setStyle(control.$volume, 'display', flag ? 'flex' : 'none');\n // setStyle(control.$fullscreen, 'display', flag ? 'flex' : 'none');\n screenfullChange();\n // 不在播放\n if (!flag) {\n control.$speed && (control.$speed.innerHTML = bpsSize(''));\n }\n })\n\n\n player.on(EVENTS.kBps, (rate) => {\n const bps = bpsSize(rate);\n control.$speed && (control.$speed.innerHTML = bps);\n })\n}\n","export default (player, control) => {\n\n Object.defineProperty(control, 'controlsRect', {\n get: () => {\n return control.$controls.getBoundingClientRect();\n },\n });\n\n}\n","import {clamp, isMobile, setStyle} from \"../utils\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n debug\n } = player;\n\n function volumeChangeFromEvent(event) {\n const {bottom: panelBottom, height: panelHeight} = control.$volumePanel.getBoundingClientRect();\n const {height: handleHeight} = control.$volumeHandle.getBoundingClientRect();\n\n let moveLen = event.y;\n\n // if (isMobile() && player.fullscreen) {\n // moveLen = event.x;\n // }\n\n const percentage =\n clamp(panelBottom - moveLen - handleHeight / 2, 0, panelHeight - handleHeight / 2) / (panelHeight - handleHeight);\n return percentage;\n }\n\n //\n proxy(window, ['click', 'contextmenu'], event => {\n if (event.composedPath().indexOf(player.$container) > -1) {\n control.isFocus = true;\n } else {\n control.isFocus = false;\n }\n });\n\n //\n proxy(window, 'orientationchange', () => {\n setTimeout(() => {\n player.resize();\n }, 300);\n });\n\n\n proxy(control.$controls, 'click', (e) => {\n e.stopPropagation();\n })\n\n proxy(control.$pause, 'click', (e) => {\n player.pause();\n })\n // 监听 play 方法\n proxy(control.$play, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n proxy(control.$volume, 'mouseover', () => {\n control.$volumePanelWrap.classList.add('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volume, 'mouseout', () => {\n control.$volumePanelWrap.classList.remove('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volumeOn, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'block');\n const lastVolume = player.volume;\n player.volume = 0;\n player._lastVolume = lastVolume;\n })\n\n proxy(control.$volumeOff, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'block');\n setStyle(control.$volumeOff, 'display', 'none');\n player.volume = player.lastVolume || 0.5;\n })\n\n proxy(control.$screenshot, 'click', (e) => {\n e.stopPropagation();\n player.video.screenshot();\n })\n\n proxy(control.$volumePanel, 'click', event => {\n event.stopPropagation();\n player.volume = volumeChangeFromEvent(event);\n });\n\n proxy(control.$volumeHandle, 'mousedown', () => {\n control.isVolumeDroging = true;\n });\n\n proxy(control.$volumeHandle, 'mousemove', event => {\n if (control.isVolumeDroging) {\n player.volume = volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (control.isVolumeDroging) {\n control.isVolumeDroging = false;\n }\n });\n\n proxy(control.$record, 'click', (e) => {\n e.stopPropagation();\n player.recording = true;\n })\n\n proxy(control.$recordStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$recordingStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$fullscreen, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = true;\n })\n\n proxy(control.$fullscreenExit, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = false;\n })\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n //\n proxy(player.$container, 'mouseover', () => {\n if (!player.fullscreen) {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n })\n\n proxy(player.$container, 'mousemove', () => {\n if (player.$container && control.$controls) {\n if (!player.fullscreen) {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n } else {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n }\n }\n })\n\n proxy(player.$container, 'mouseout', () => {\n stopDelayControlHidden();\n setStyle(control.$controls, 'display', 'none');\n })\n let delayHiddenTimeout = null;\n const startDelayControlHidden = () => {\n stopDelayControlHidden();\n delayHiddenTimeout = setTimeout(() => {\n setStyle(control.$controls, 'display', 'none');\n }, 5 * 1000)\n }\n\n const stopDelayControlHidden = () => {\n if (delayHiddenTimeout) {\n clearTimeout(delayHiddenTimeout);\n delayHiddenTimeout = null;\n }\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// todo: 待定\nimport {HOT_KEY} from \"../constant\";\n\nexport default (player, control) => {\n const {\n events: {proxy}\n } = player;\n\n const keys = {};\n\n function addHotkey(key, event) {\n if (keys[key]) {\n keys[key].push(event);\n } else {\n keys[key] = [event];\n }\n }\n\n //\n addHotkey(HOT_KEY.esc, () => {\n if (player.fullscreen) {\n player.fullscreen = false;\n }\n })\n\n //\n addHotkey(HOT_KEY.arrowUp, () => {\n player.volume += 0.05;\n })\n\n //\n addHotkey(HOT_KEY.arrowDown, () => {\n player.volume -= 0.05;\n })\n\n proxy(window, 'keydown', event => {\n if (control.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n const events = keys[event.keyCode];\n if (events) {\n event.preventDefault();\n events.forEach(fn => fn());\n }\n }\n }\n });\n}\n","import template from \"./template\";\nimport observer from './observer';\nimport property from './property';\nimport events from './events';\nimport './style.scss'\nimport hotkey from \"./hotkey\";\nimport {getStyle, isBoolean, removeElement, setStyle} from \"../utils\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n property(player, this);\n observer(player, this);\n events(player, this);\n if (player._opt.hotKey) {\n hotkey(player, this);\n }\n this.player.debug.log('Control', 'init');\n }\n\n destroy() {\n if (this.$poster) {\n const result = removeElement(this.$poster);\n if(!result){\n const $poster = this.player.$container.querySelector('.jessibuca-poster');\n if ($poster && this.player.$container) {\n this.player.$container.removeChild($poster);\n }\n }\n }\n if (this.$loading) {\n const result = removeElement(this.$loading)\n if (!result) {\n const $loading = this.player.$container.querySelector('.jessibuca-loading');\n if ($loading && this.player.$container) {\n this.player.$container.removeChild($loading);\n }\n }\n }\n if (this.$controls) {\n const result = removeElement(this.$controls)\n if (!result) {\n const $controls = this.player.$container.querySelector('.jessibuca-controls');\n if ($controls && this.player.$container) {\n this.player.$container.removeChild($controls);\n }\n }\n }\n\n if (this.$recording) {\n const result = removeElement(this.$recording)\n if (!result) {\n const $recording = this.player.$container.querySelector('.jessibuca-recording');\n if ($recording && this.player.$container) {\n this.player.$container.removeChild($recording);\n }\n }\n }\n\n if (this.$playBig) {\n const result = removeElement(this.$playBig)\n if (!result) {\n const $playBig = this.player.$container.querySelector('.jessibuca-play-big');\n if ($playBig && this.player.$container) {\n this.player.$container.removeChild($playBig);\n }\n }\n }\n\n if(this.player.$container){\n this.player.$container.classList.remove('jessibuca-controls-show-auto-hide');\n this.player.$container.classList.remove('jessibuca-controls-show');\n }\n\n this.player.debug.log('control', 'destroy');\n }\n\n autoSize() {\n const player = this.player;\n player.$container.style.padding = '0 0';\n const playerWidth = player.width;\n const playerHeight = player.height;\n const playerRatio = playerWidth / playerHeight;\n const canvasWidth = player.video.$videoElement.width;\n const canvasHeight = player.video.$videoElement.height;\n const canvasRatio = canvasWidth / canvasHeight;\n if (playerRatio > canvasRatio) {\n const padding = (playerWidth - playerHeight * canvasRatio) / 2;\n player.$container.style.padding = `0 ${padding}px`;\n } else {\n const padding = (playerHeight - playerWidth / canvasRatio) / 2;\n player.$container.style.padding = `${padding}px 0`;\n }\n }\n\n toggleBar(flag) {\n if (this.$controls) {\n if (!isBoolean(flag)) {\n // flag = this.$controls.style.display === 'none';\n flag = getStyle(this.$controls, 'display', false) === 'none';\n }\n\n if (flag) {\n setStyle(this.$controls, 'display', 'flex');\n } else {\n setStyle(this.$controls, 'display', 'none');\n }\n }\n }\n\n getBarIsShow() {\n let result = false;\n if (this.$controls) {\n result = getStyle(this.$controls, 'display', false) !== 'none';\n }\n return result;\n }\n}\n","import {getTarget} from \"../utils\";\n\nexport default (player) => {\n\n const {\n _opt,\n debug,\n events: {proxy},\n } = player;\n\n\n if (_opt.supportDblclickFullscreen) {\n proxy(player.$container, 'dblclick', (e) => {\n const target = getTarget(e);\n const nodeName = target.nodeName.toLowerCase();\n if (nodeName === 'canvas' || nodeName === 'video') {\n player.fullscreen = !player.fullscreen;\n }\n })\n }\n\n\n //\n proxy(document, 'visibilitychange', () => {\n if (_opt.hiddenAutoPause) {\n debug.log('visibilitychange', document.visibilityState, player._isPlayingBeforePageHidden)\n\n if (\"visible\" === document.visibilityState) {\n if (player._isPlayingBeforePageHidden) {\n player.play();\n }\n } else {\n player._isPlayingBeforePageHidden = player.playing;\n // hidden\n if (player.playing) {\n player.pause();\n }\n }\n }\n })\n\n proxy(window, 'fullscreenchange', () => {\n //\n if (player.keepScreenOn !== null && \"visible\" === document.visibilityState) {\n player.enableWakeLock();\n }\n })\n}\n","class MP4 {\n\n static init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n hvc1: [],\n hvcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n for (let name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [\n name.charCodeAt(0),\n name.charCodeAt(1),\n name.charCodeAt(2),\n name.charCodeAt(3)\n ];\n }\n }\n\n let constants = MP4.constants = {};\n\n constants.FTYP = new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n\n constants.STSD_PREFIX = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n\n constants.STTS = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n constants.STSC = constants.STCO = constants.STTS;\n\n constants.STSZ = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n\n constants.HDLR_VIDEO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x56, 0x69, 0x64, 0x65,\n 0x6F, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n\n constants.HDLR_AUDIO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x53, 0x6F, 0x75, 0x6E,\n 0x64, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n\n constants.DREF = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]);\n\n // Sound media header\n constants.SMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]);\n\n // video media header\n constants.VMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00\n ]);\n }\n\n // Generate a box\n static box(type) {\n let size = 8;\n let result = null;\n let datas = Array.prototype.slice.call(arguments, 1);\n let arrayCount = datas.length;\n\n for (let i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = (size >>> 24) & 0xFF; // size\n result[1] = (size >>> 16) & 0xFF;\n result[2] = (size >>> 8) & 0xFF;\n result[3] = (size) & 0xFF;\n\n result.set(type, 4); // type\n\n let offset = 8;\n for (let i = 0; i < arrayCount; i++) { // data body\n result.set(datas[i], offset);\n offset += datas[i].byteLength;\n }\n\n return result;\n }\n\n // emit ftyp & moov\n static generateInitSegment(meta) {\n let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n let moov = MP4.moov(meta);\n\n let result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n }\n\n // Movie metadata box\n static moov(meta) {\n let mvhd = MP4.mvhd(meta.timescale, meta.duration);\n let trak = MP4.trak(meta);\n let mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n }\n\n // Movie header box\n static mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n }\n\n // Track box\n static trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n }\n\n // Track header box\n static tkhd(meta) {\n let trackId = meta.id, duration = meta.duration;\n let width = meta.presentWidth, height = meta.presentHeight;\n\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (trackId >>> 24) & 0xFF, // track_ID: 4 bytes\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n (width >>> 8) & 0xFF, // width and height\n (width) & 0xFF,\n 0x00, 0x00,\n (height >>> 8) & 0xFF,\n (height) & 0xFF,\n 0x00, 0x00\n ]));\n }\n\n static mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta))\n }\n\n // Media header box\n static mdhd(meta) {\n let timescale = meta.timescale;\n let duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n }\n\n // Media handler reference box\n static hdlr(meta) {\n let data = null;\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n return MP4.box(MP4.types.hdlr, data);\n }\n\n // Media infomation box\n static minf(meta) {\n let xmhd = null;\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n }\n\n // Data infomation box\n static dinf() {\n let result = MP4.box(MP4.types.dinf,\n MP4.box(MP4.types.dref, MP4.constants.DREF)\n );\n return result;\n }\n\n // Sample table box\n static stbl(meta) {\n let result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n }\n\n // Sample description box\n static stsd(meta) {\n if (meta.type === 'audio') {\n // else: aac -> mp4a\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n if (meta.videoType === 'avc') {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n } else {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.hvc1(meta))\n }\n }\n }\n\n static mp4a(meta) {\n let channelCount = meta.channelCount;\n let sampleRate = meta.audioSampleRate;\n\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n (sampleRate >>> 8) & 0xFF, // Audio sample rate\n (sampleRate) & 0xFF,\n 0x00, 0x00\n ]);\n\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n }\n\n static esds(meta) {\n let config = meta.config || [];\n let configSize = config.length;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version 0 + flags\n\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([\n configSize\n ]).concat(\n config\n ).concat([\n 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n }\n\n // avc\n static avc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255]\n );\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc))\n }\n\n // hvc\n static hvc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255\n ]);\n return MP4.box(MP4.types.hvc1, data, MP4.box(MP4.types.hvcC, avcc))\n }\n\n // Movie Extends box\n static mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta))\n }\n\n // Track Extends box\n static trex(meta) {\n let trackId = meta.id;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n }\n\n // Movie fragment box\n static moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime))\n }\n //\n static mfhd(sequenceNumber) {\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n (sequenceNumber >>> 24) & 0xFF, // sequence_number: int32\n (sequenceNumber >>> 16) & 0xFF,\n (sequenceNumber >>> 8) & 0xFF,\n (sequenceNumber) & 0xFF\n ]);\n return MP4.box(MP4.types.mfhd, data);\n }\n\n // Track fragment box\n static traf(track, baseMediaDecodeTime) {\n let trackId = track.id;\n\n // Track fragment header box\n let tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF\n ]));\n // Track Fragment Decode Time\n let tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (baseMediaDecodeTime >>> 24) & 0xFF, // baseMediaDecodeTime: int32\n (baseMediaDecodeTime >>> 16) & 0xFF,\n (baseMediaDecodeTime >>> 8) & 0xFF,\n (baseMediaDecodeTime) & 0xFF\n ]));\n let sdtp = MP4.sdtp(track);\n let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n }\n\n // Sample Dependency Type box\n static sdtp(track) {\n let data = new Uint8Array(4 + 1);\n let flags = track.flags;\n data[4] = flags.isLeading << 6\n | flags.dependsOn << 4\n | flags.isDependedOn << 2\n | flags.hasRedundancy;\n return MP4.box(MP4.types.sdtp, data);\n }\n // trun\n static trun(track, offset) {\n let dataSize = 12 + 16;\n let data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n\n data.set([\n 0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n 0x00, 0x00, 0x00, 0x01, // sample_count\n (offset >>> 24) & 0xFF, // data_offset\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n (offset) & 0xFF\n ], 0);\n\n let duration = track.duration;\n let size = track.size;\n let flags = track.flags;\n let cts = track.cts;\n\n data.set([\n (duration >>> 24) & 0xFF, // sample_duration\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n (size >>> 24) & 0xFF, // sample_size\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n (size) & 0xFF,\n (flags.isLeading << 2) | flags.dependsOn, // sample_flags\n (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,\n 0x00, 0x00, // sample_degradation_priority\n (cts >>> 24) & 0xFF, // sample_composition_time_offset\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n (cts) & 0xFF\n ], 12);\n\n return MP4.box(MP4.types.trun, data);\n }\n // mdat\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data)\n }\n}\n\nMP4.init();\n\nexport default MP4;\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FRAG_DURATION, MEDIA_SOURCE_STATE, MP4_CODECS, VIDEO_ENC_CODE} from \"../constant\";\nimport MP4 from \"../remux/fmp4-generator\";\nimport {parseAVCDecoderConfigurationRecord,} from \"../utils/h264\";\nimport {now} from \"../utils\";\n\nexport default class MseDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.isAvc = true;\n this.mediaSource = new window.MediaSource();\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.cacheTrack = {};\n this.timeInit = false;\n this.sequenceNumber = 0;\n this.mediaSourceOpen = false;\n this.dropping = false;\n this.firstRenderTime = null;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.player.video.$videoElement.src = window.URL.createObjectURL(this.mediaSource);\n const {\n debug,\n events: {proxy},\n } = player;\n\n\n proxy(this.mediaSource, 'sourceopen', () => {\n this.mediaSourceOpen = true;\n this.player.emit(EVENTS.mseSourceOpen)\n })\n\n proxy(this.mediaSource, 'sourceclose', () => {\n this.player.emit(EVENTS.mseSourceClose);\n })\n\n player.debug.log('MediaSource', 'init')\n }\n\n destroy() {\n this.stop();\n this.mediaSource = null;\n this.mediaSourceOpen = false;\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return this.mediaSource && this.mediaSource.readyState\n }\n\n get isStateOpen() {\n return this.state === MEDIA_SOURCE_STATE.open;\n }\n\n get isStateClosed() {\n return this.state === MEDIA_SOURCE_STATE.closed;\n }\n\n get isStateEnded() {\n return this.state === MEDIA_SOURCE_STATE.ended;\n }\n\n get duration() {\n return this.mediaSource && this.mediaSource.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe, cts) {\n const player = this.player;\n\n if (!player) {\n return;\n }\n\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n return;\n }\n if (!player._times.decodeStart) {\n player._times.decodeStart = now();\n }\n\n this._decodeConfigurationRecord(payload, ts, isIframe, videoCodec)\n this.hasInit = true;\n }\n } else {\n if (isIframe && payload[1] === 0) {\n let config = parseAVCDecoderConfigurationRecord(payload.slice(5))\n const videoInfo = this.player.video.videoInfo;\n if ((videoInfo && videoInfo.width && videoInfo.height) && (config && config.codecWidth && config.codecHeight) && (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height)) {\n this.player.debug.warn('MediaSource', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.isInitInfo = false;\n this.player.video.init = false;\n }\n }\n\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n if (this.isDecodeFirstIIframe) {\n if (this.firstRenderTime === null) {\n this.firstRenderTime = ts;\n }\n const dts = ts - this.firstRenderTime;\n\n this._decodeVideo(payload, dts, isIframe, cts);\n } else {\n this.player.debug.warn('MediaSource', 'decodeVideo isDecodeFirstIIframe false')\n }\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n config = parseAVCDecoderConfigurationRecord(data)\n\n const metaData = {\n id: 1, // video tag data\n type: 'video',\n timescale: 1000,\n duration: 0,\n avcc: data,\n codecWidth: config.codecWidth,\n codecHeight: config.codecHeight,\n videoType: config.videoType\n }\n // ftyp\n const metaBox = MP4.generateInitSegment(metaData);\n this.isAvc = true;\n this.appendBuffer(metaBox.buffer);\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n }\n\n //\n _decodeVideo(payload, dts, isIframe, cts) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n const videoBufferDelay = player._opt.videoBufferDelay;\n if ($video.buffered.length > 1) {\n this.removeBuffer($video.buffered.start(0), $video.buffered.end(0));\n this.timeInit = false;\n }\n if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) {\n this.dropping = false;\n this.cacheTrack = {};\n } else if (this.cacheTrack && dts >= this.cacheTrack.dts) {\n // 需要额外加8个size\n let mdatBytes = 8 + this.cacheTrack.size;\n let mdatbox = new Uint8Array(mdatBytes);\n mdatbox[0] = mdatBytes >>> 24 & 255;\n mdatbox[1] = mdatBytes >>> 16 & 255;\n mdatbox[2] = mdatBytes >>> 8 & 255;\n mdatbox[3] = mdatBytes & 255;\n mdatbox.set(MP4.types.mdat, 4);\n mdatbox.set(this.cacheTrack.data, 8);\n\n this.cacheTrack.duration = dts - this.cacheTrack.dts;\n // moof\n let moofbox = MP4.moof(this.cacheTrack, this.cacheTrack.dts);\n let result = new Uint8Array(moofbox.byteLength + mdatbox.byteLength);\n result.set(moofbox, 0);\n result.set(mdatbox, moofbox.byteLength);\n // appendBuffer\n this.appendBuffer(result.buffer)\n player.handleRender();\n player.updateStats({fps: true, ts: dts, buf: (player.demux && player.demux.delay) || 0})\n if (!player._times.videoStart) {\n player._times.videoStart = now();\n player.handlePlayToRenderTimes()\n }\n } else {\n player.debug.log('MediaSource', 'timeInit set false , cacheTrack = {}');\n this.timeInit = false;\n this.cacheTrack = {};\n }\n if (!this.cacheTrack) {\n this.cacheTrack = {};\n }\n this.cacheTrack.id = 1;\n this.cacheTrack.sequenceNumber = ++this.sequenceNumber;\n this.cacheTrack.size = bytes;\n this.cacheTrack.dts = dts;\n this.cacheTrack.cts = cts;\n this.cacheTrack.isKeyframe = isIframe;\n this.cacheTrack.data = arrayBuffer;\n //\n this.cacheTrack.flags = {\n isLeading: 0,\n dependsOn: isIframe ? 2 : 1,\n isDependedOn: isIframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isIframe ? 0 : 1\n }\n\n //\n if (!this.timeInit && $video.buffered.length === 1) {\n player.debug.log('MediaSource', 'timeInit set true');\n this.timeInit = true;\n $video.currentTime = $video.buffered.end(0);\n }\n\n if (!this.isInitInfo && $video.videoWidth > 0 && $video.videoHeight > 0) {\n player.debug.log('MediaSource', `updateVideoInfo: ${$video.videoWidth},${$video.videoHeight}`);\n player.video.updateVideoInfo({\n width: $video.videoWidth,\n height: $video.videoHeight\n })\n player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n }\n\n appendBuffer(buffer) {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n if (this.sourceBuffer === null) {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(MP4_CODECS.avc);\n proxy(this.sourceBuffer, 'error', (error) => {\n debug.error('MediaSource', 'sourceBuffer error', error);\n this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.mediaSourceAppendBufferError) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferError is true`);\n return;\n }\n\n if (this.mediaSourceAppendBufferFull) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferFull is true`);\n return;\n }\n\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n try {\n this.sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n debug.warn('MediaSource', 'this.sourceBuffer.appendBuffer()', e.code, e);\n if (e.code === 22) {\n // QuotaExceededError\n // The SourceBuffer is full, and cannot free space to append additional buffers\n this.stop();\n this.mediaSourceAppendBufferFull = true;\n this.emit(EVENTS_ERROR.mediaSourceFull)\n } else if (e.code === 11) {\n // Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.\n this.stop();\n this.mediaSourceAppendBufferError = true;\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError);\n } else {\n debug.error('MediaSource', 'appendBuffer error', e)\n this.player.emit(EVENTS.mseSourceBufferError, e);\n }\n }\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(true);\n }\n }\n }\n\n stop() {\n this.abortSourceBuffer();\n this.removeSourceBuffer();\n this.endOfStream();\n }\n\n dropSourceBuffer(isDropping) {\n const $video = this.player.video.$videoElement;\n this.dropping = isDropping;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\n this.player.debug.warn('MediaSource', 'dropSourceBuffer', `$video.buffered.end(0) is ${$video.buffered.end(0)} - $video.currentTime ${$video.currentTime}`);\n $video.currentTime = $video.buffered.end(0);\n }\n }\n }\n\n\n removeBuffer(start, end) {\n\n if (this.isStateOpen && this.sourceBuffer.updating === false) {\n try {\n this.sourceBuffer.remove(start, end)\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeBuffer() error', e);\n }\n } else {\n this.player.debug.warn('MediaSource', 'removeBuffer() this.isStateOpen is', this.isStateOpen, 'this.sourceBuffer.updating', this.sourceBuffer.updating);\n }\n }\n\n endOfStream() {\n // fix: MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error\n const $videoElement = this.player.video && this.player.video.$videoElement;\n if (this.isStateOpen && $videoElement && $videoElement.readyState >= 1) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n this.player.debug.warn('MediaSource', 'endOfStream() error', e);\n }\n }\n }\n\n abortSourceBuffer() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n this.sourceBuffer = null;\n }\n }\n }\n\n removeSourceBuffer() {\n if (!this.isStateClosed) {\n if (this.mediaSource && this.sourceBuffer) {\n try {\n this.mediaSource.removeSourceBuffer(this.sourceBuffer);\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeSourceBuffer() error', e);\n }\n }\n }\n }\n\n getSourceBufferUpdating() {\n return this.sourceBuffer && this.sourceBuffer.updating;\n }\n\n}\n","// tks: https://github.com/richtr/NoSleep.js\n\nconst WEBM = \"data:video/webm;base64,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\";\nconst MP4 = \"data:video/mp4;base64,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\";\n\n\n// Detect iOS browsers < version 10\nconst\n oldIOS = () =>\n typeof navigator !== \"undefined\" &&\n parseFloat(\n (\n \"\" +\n (/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(\n navigator.userAgent\n ) || [0, \"\"])[1]\n )\n .replace(\"undefined\", \"3_2\")\n .replace(\"_\", \".\")\n .replace(\"_\", \"\")\n ) < 10 &&\n !window.MSStream;\n\n// Detect native Wake Lock API support\nconst nativeWakeLock = () => \"wakeLock\" in navigator;\n\nexport default class NoSleep {\n constructor(player) {\n this.player = player;\n this.enabled = false;\n if (nativeWakeLock()) {\n this._wakeLock = null;\n const handleVisibilityChange = () => {\n if (this._wakeLock !== null && document.visibilityState === \"visible\") {\n this.enable();\n }\n };\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n document.addEventListener(\"fullscreenchange\", handleVisibilityChange);\n } else if (oldIOS()) {\n this.noSleepTimer = null;\n } else {\n // Set up no sleep video element\n this.noSleepVideo = document.createElement(\"video\");\n\n this.noSleepVideo.setAttribute(\"title\", \"No Sleep\");\n this.noSleepVideo.setAttribute(\"playsinline\", \"\");\n\n this._addSourceToVideo(this.noSleepVideo, \"webm\", WEBM);\n this._addSourceToVideo(this.noSleepVideo, \"mp4\", MP4);\n\n this.noSleepVideo.addEventListener(\"loadedmetadata\", () => {\n if (this.noSleepVideo.duration <= 1) {\n // webm source\n this.noSleepVideo.setAttribute(\"loop\", \"\");\n } else {\n // mp4 source\n this.noSleepVideo.addEventListener(\"timeupdate\", () => {\n if (this.noSleepVideo.currentTime > 0.5) {\n this.noSleepVideo.currentTime = Math.random();\n }\n });\n }\n });\n }\n }\n\n _addSourceToVideo(element, type, dataURI) {\n var source = document.createElement(\"source\");\n source.src = dataURI;\n source.type = `video/${type}`;\n element.appendChild(source);\n }\n\n get isEnabled() {\n return this.enabled;\n }\n\n enable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n return navigator.wakeLock\n .request(\"screen\")\n .then((wakeLock) => {\n this._wakeLock = wakeLock;\n this.enabled = true;\n debug.log('wakeLock', 'Wake Lock active.')\n this._wakeLock.addEventListener(\"release\", () => {\n // ToDo: Potentially emit an event for the page to observe since\n // Wake Lock releases happen when page visibility changes.\n // (https://web.dev/wakelock/#wake-lock-lifecycle)\n debug.log('wakeLock', 'Wake Lock released.')\n });\n })\n .catch((err) => {\n this.enabled = false;\n debug.error('wakeLock', `${err.name}, ${err.message}`)\n throw err;\n });\n } else if (oldIOS()) {\n this.disable();\n this.noSleepTimer = window.setInterval(() => {\n if (!document.hidden) {\n window.location.href = window.location.href.split(\"#\")[0];\n window.setTimeout(window.stop, 0);\n }\n }, 15000);\n this.enabled = true;\n return Promise.resolve();\n } else {\n let playPromise = this.noSleepVideo.play();\n return playPromise\n .then((res) => {\n this.enabled = true;\n return res;\n })\n .catch((err) => {\n this.enabled = false;\n throw err;\n });\n }\n }\n\n disable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n if (this._wakeLock) {\n this._wakeLock.release();\n }\n this._wakeLock = null;\n } else if (oldIOS()) {\n if (this.noSleepTimer) {\n debug.warn('wakeLock', 'NoSleep now disabled for older iOS devices.')\n\n window.clearInterval(this.noSleepTimer);\n this.noSleepTimer = null;\n }\n } else {\n this.noSleepVideo.pause();\n }\n this.enabled = false;\n }\n}\n","import {DEFAULT_PLAYER_OPTIONS, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS,VERSION} from \"../constant\";\nimport Debug from \"../utils/debug\";\nimport Events from \"../utils/events\";\nimport property from './property';\nimport events from './events';\nimport {\n fpsStatus,\n initPlayTimes,\n isEmpty, isFalse,\n isFullScreen, isMobile,isPad,\n isNotEmpty,\n now, supportMediaStreamTrack,\n supportMSE,\n supportOffscreenV2,\n supportWCS\n} from \"../utils\";\nimport Video from \"../video\";\nimport Audio from \"../audio\";\nimport Stream from \"../stream\";\nimport Recorder from \"../recorder\";\nimport DecoderWorker from \"../worker/index\";\nimport Emitter from \"../utils/emitter\";\nimport Demux from \"../demux\";\nimport WebcodecsDecoder from \"../decoder/webcodecs\";\nimport Control from \"../control\";\nimport './style.scss'\nimport observer from \"./observer\";\nimport MseDecoder from \"../decoder/mediaSource\";\nimport NoSleep from \"../utils/noSleep\";\nimport screenfull from \"screenfull\";\n\nexport default class Player extends Emitter {\n constructor(container, options) {\n super()\n this.$container = container;\n this._opt = Object.assign({}, DEFAULT_PLAYER_OPTIONS, options)\n this.debug = new Debug(this);\n this.debug.log('Player', 'init');\n\n // disable offscreen\n this._opt.forceNoOffscreen = true;\n\n if (isMobile() || isPad()) {\n this.debug.log('Player', 'isMobile and set _opt.controlAutoHide false');\n this._opt.controlAutoHide = false;\n }\n\n if (screenfull.isEnabled &&\n this._opt.useWebFullScreen) {\n this.debug.log('Player', 'screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false');\n this._opt.useWebFullScreen = false;\n }\n\n if (isFalse(screenfull.isEnabled) &&\n isFalse(this._opt.useWebFullScreen)) {\n this.debug.log('Player', 'screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true');\n this._opt.useWebFullScreen = true;\n }\n\n\n //\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n //\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\n }\n\n //\n if (this._opt.wcsUseVideoRender) {\n this._opt.wcsUseVideoRender = supportMediaStreamTrack()\n }\n\n // 如果使用mse则强制不允许 webcodecs\n if (this._opt.useMSE) {\n if (this._opt.useWCS) {\n this.debug.log('Player', 'useWCS set true->false')\n }\n\n if (!this._opt.forceNoOffscreen) {\n this.debug.log('Player', 'forceNoOffscreen set false->true')\n }\n\n this._opt.useWCS = false;\n this._opt.forceNoOffscreen = true;\n }\n\n if (!this._opt.forceNoOffscreen) {\n if (!supportOffscreenV2()) {\n this._opt.forceNoOffscreen = true;\n this._opt.useOffscreen = false;\n } else {\n this._opt.useOffscreen = true;\n }\n }\n\n if (!this._opt.hasAudio) {\n this._opt.operateBtns.audio = false\n }\n\n this._opt.hasControl = this._hasControl();\n //\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n //\n this._checkHeartTimeout = null;\n this._checkLoadingTimeout = null;\n this._checkStatsInterval = null;\n\n //\n this._startBpsTime = null;\n this._isPlayingBeforePageHidden = false;\n this._stats = {\n buf: 0, // 当前缓冲区时长,单位毫秒,\n fps: 0, // 当前视频帧率\n abps: 0, // 当前音频码率,单位bit\n vbps: 0, // 当前视频码率,单位bit\n ts: 0 // 当前视频帧pts,单位毫秒\n }\n\n // 各个步骤的时间统计\n this._times = initPlayTimes();\n\n //\n this._videoTimestamp = 0;\n this._audioTimestamp = 0;\n\n property(this);\n\n this.events = new Events(this);\n this.video = new Video(this);\n\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n this.recorder = new Recorder(this);\n\n if (!this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n } else {\n this.loaded = true;\n }\n\n this.stream = null;\n this.demux = null;\n this._lastVolume = null;\n\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n this.loaded = true\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n this.loaded = true\n }\n\n //\n this.control = new Control(this);\n\n if (isMobile()) {\n this.keepScreenOn = new NoSleep(this);\n }\n\n events(this);\n observer(this);\n this.debug.log('Player', 'init and version is',VERSION);\n\n if (this._opt.useWCS) {\n this.debug.log('Player', 'use WCS')\n }\n\n if (this._opt.useMSE) {\n this.debug.log('Player', 'use MSE')\n }\n\n if (this._opt.useOffscreen) {\n this.debug.log('Player', 'use offscreen')\n }\n\n try {\n this.debug.log('Player options', JSON.stringify(this._opt));\n } catch (e) {\n // ignore\n }\n }\n\n\n async destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n this._lastVolume = null;\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n await this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n if (this.video) {\n this.video.destroy();\n this.video = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n\n if (this.stream) {\n await this.stream.destroy();\n this.stream = null;\n }\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n //\n this.releaseWakeLock();\n this.keepScreenOn = null;\n // reset stats\n this.resetStats();\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n\n // 其他没法解耦的,通过 destroy 方式\n this.emit('destroy');\n // 接触所有绑定事件\n this.off();\n\n this.debug.log('play', 'destroy end');\n }\n\n set fullscreen(value) {\n if (isMobile() && this._opt.useWebFullScreen) {\n this.emit(EVENTS.webFullscreen, value);\n setTimeout(() => {\n this.updateOption({\n rotate: value ? 270 : 0,\n })\n this.resize();\n }, 10)\n } else {\n this.emit(EVENTS.fullscreen, value);\n }\n }\n\n get fullscreen() {\n return isFullScreen() || this.webFullscreen;\n }\n\n set webFullscreen(value) {\n this.emit(EVENTS.webFullscreen, value);\n }\n\n get webFullscreen() {\n return this.$container.classList.contains('jessibuca-fullscreen-web')\n }\n\n set loaded(value) {\n this._hasLoaded = value;\n }\n\n get loaded() {\n return this._hasLoaded;\n }\n\n //\n set playing(value) {\n\n if (value) {\n // 将loading 设置为 false\n this.loading = false;\n }\n\n if (this.playing !== value) {\n this._playing = value;\n this.emit(EVENTS.playing, value);\n this.emit(EVENTS.volumechange, this.volume);\n\n if (value) {\n this.emit(EVENTS.play);\n } else {\n this.emit(EVENTS.pause);\n }\n }\n }\n\n get playing() {\n return this._playing;\n }\n\n get volume() {\n return (this.audio && this.audio.volume) || 0;\n }\n\n set volume(value) {\n if (value !== this.volume) {\n this.audio && this.audio.setVolume(value);\n this._lastVolume = value;\n }\n }\n\n get lastVolume() {\n return this._lastVolume\n }\n\n set loading(value) {\n if (this.loading !== value) {\n this._loading = value;\n this.emit(EVENTS.loading, this._loading);\n }\n }\n\n get loading() {\n return this._loading;\n }\n\n set recording(value) {\n if (value) {\n if (this.playing) {\n this.recorder && this.recorder.startRecord();\n }\n } else {\n this.recorder && this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder ? this.recorder.recording : false;\n }\n\n set audioTimestamp(value) {\n if (value === null) {\n return;\n }\n this._audioTimestamp = value;\n }\n\n //\n get audioTimestamp() {\n return this._audioTimestamp;\n }\n\n //\n set videoTimestamp(value) {\n if (value === null) {\n return;\n }\n this._videoTimestamp = value;\n // just for wasm\n if (!this._opt.useWCS && !this._opt.useMSE) {\n if (this.audioTimestamp && this.videoTimestamp) {\n this.audio && this.audio.emit(EVENTS.videoSyncAudio, {\n audioTimestamp: this.audioTimestamp,\n videoTimestamp: this.videoTimestamp,\n diff: this.audioTimestamp - this.videoTimestamp\n })\n }\n }\n }\n\n //\n get videoTimestamp() {\n return this._videoTimestamp;\n }\n\n get isDebug() {\n return this._opt.debug === true;\n }\n\n\n /**\n *\n * @param options\n */\n updateOption(options) {\n this._opt = Object.assign({}, this._opt, options)\n }\n\n /**\n *\n * @returns {Promise}\n */\n init() {\n return new Promise((resolve, reject) => {\n if (!this.stream) {\n this.stream = new Stream(this);\n }\n\n if (!this.audio) {\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n }\n if (!this.demux) {\n this.demux = new Demux(this);\n }\n\n if (this._opt.useWCS) {\n if (!this.webcodecsDecoder) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n }\n\n if (this._opt.useMSE) {\n if (!this.mseDecoder) {\n this.mseDecoder = new MseDecoder(this);\n }\n }\n\n if (!this.decoderWorker && !this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n this.debug.log('Player', 'waiting decoderWorker init');\n this.once(EVENTS.decoderWorkerInit, () => {\n this.debug.log('Player', 'decoderWorker init success');\n resolve()\n })\n } else {\n resolve()\n }\n\n })\n }\n\n\n /**\n *\n * @param url\n * @returns {Promise}\n */\n play(url, options) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n return reject();\n }\n\n this.loading = true;\n this.playing = false;\n this._times.playInitStart = now();\n if (!url) {\n url = this._opt.url;\n }\n this._opt.url = url;\n\n this.clearCheckHeartTimeout();\n\n this.init().then(() => {\n this._times.playStart = now();\n //\n if (this._opt.isNotMute) {\n this.mute(false);\n }\n\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.webcodecsH265NotSupport);\n }\n })\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.mediaSourceH265NotSupport);\n }\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.emitError(EVENTS_ERROR.mediaSourceFull)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferError)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.emitError(EVENTS_ERROR.mediaSourceBufferListLarge);\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout);\n })\n }\n\n this.enableWakeLock();\n\n this.stream.fetchStream(url, options);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.fetchError, error);\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.websocketError, error);\n })\n\n // stream end\n this.stream.once(EVENTS.streamEnd, (msg) => {\n // reject();\n this.emitError(EVENTS.streamEnd, msg);\n })\n\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\n this.checkStatsInterval();\n })\n\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n /**\n *\n */\n close() {\n return new Promise((resolve, reject) => {\n this._close().then(() => {\n this.video && this.video.clearView();\n resolve()\n })\n })\n }\n\n resumeAudioAfterPause() {\n if (this.lastVolume) {\n this.volume = this.lastVolume;\n }\n }\n\n _close() {\n return new Promise((resolve, reject) => {\n //\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n //\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n\n if (this.video) {\n this.video.resetInit();\n this.video.pause(true);\n }\n // release lock\n this.releaseWakeLock();\n // reset stats\n this.resetStats();\n //\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n //\n this._times = initPlayTimes();\n //\n setTimeout(() => {\n resolve()\n }, 0)\n })\n }\n\n /**\n *\n * @param flag {boolean} 是否清除画面\n * @returns {Promise}\n */\n pause(flag = false) {\n if (flag) {\n return this.close();\n } else {\n return this._close();\n }\n }\n\n /**\n *\n * @param flag\n */\n mute(flag) {\n this.audio && this.audio.mute(flag)\n }\n\n /**\n *\n */\n resize() {\n this.video.resize();\n }\n\n /**\n *\n * @param fileName\n * @param fileType\n */\n startRecord(fileName, fileType) {\n if (this.recording) {\n return;\n }\n\n this.recorder.setFileName(fileName, fileType);\n this.recording = true;\n }\n\n /**\n *\n */\n stopRecordAndSave() {\n if (this.recording) {\n this.recording = false;\n }\n }\n\n _hasControl() {\n let result = false;\n\n let hasBtnShow = false;\n Object.keys(this._opt.operateBtns).forEach((key) => {\n if (this._opt.operateBtns[key]) {\n hasBtnShow = true;\n }\n });\n\n if (this._opt.showBandwidth || this._opt.text || hasBtnShow) {\n result = true;\n }\n\n return result;\n }\n\n _onlyMseOrWcsVideo() {\n return this._opt.hasAudio === false && (this._opt.useMSE || (this._opt.useWCS && !this._opt.useOffscreen))\n }\n\n checkHeart() {\n this.clearCheckHeartTimeout();\n this.checkHeartTimeout();\n }\n\n // 心跳检查,如果渲染间隔暂停了多少时间之后,就会抛出异常\n checkHeartTimeout() {\n this._checkHeartTimeout = setTimeout(() => {\n if (this.playing) {\n // check again\n if (this._stats.fps !== 0) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }\n\n }, this._opt.heartTimeout * 1000)\n }\n\n checkStatsInterval() {\n this._checkStatsInterval = setInterval(() => {\n this.updateStats();\n }, 1000)\n }\n\n //\n clearCheckHeartTimeout() {\n if (this._checkHeartTimeout) {\n clearTimeout(this._checkHeartTimeout);\n this._checkHeartTimeout = null;\n }\n }\n\n // loading 等待时间\n checkLoadingTimeout() {\n this._checkLoadingTimeout = setTimeout(() => {\n // check again\n if (this.playing) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.loadingTimeout);\n this.emit(EVENTS.loadingTimeout);\n });\n }, this._opt.loadingTimeout * 1000)\n }\n\n clearCheckLoadingTimeout() {\n if (this._checkLoadingTimeout) {\n clearTimeout(this._checkLoadingTimeout);\n this._checkLoadingTimeout = null;\n }\n }\n\n clearStatsInterval() {\n if (this._checkStatsInterval) {\n clearInterval(this._checkStatsInterval);\n this._checkStatsInterval = null;\n }\n }\n\n handleRender() {\n if (this.loading) {\n this.emit(EVENTS.start);\n this.loading = false;\n this.clearCheckLoadingTimeout();\n }\n if (!this.playing) {\n this.playing = true;\n }\n this.checkHeart();\n }\n\n\n //\n updateStats(options) {\n options = options || {};\n\n if (!this._startBpsTime) {\n this._startBpsTime = now();\n }\n\n if (isNotEmpty(options.ts)) {\n this._stats.ts = options.ts;\n }\n\n if (isNotEmpty(options.buf)) {\n this._stats.buf = options.buf;\n }\n\n if (options.fps) {\n this._stats.fps += 1;\n }\n if (options.abps) {\n this._stats.abps += options.abps;\n }\n if (options.vbps) {\n this._stats.vbps += options.vbps;\n }\n\n const _nowTime = now();\n const timestamp = _nowTime - this._startBpsTime;\n\n if (timestamp < 1 * 1000) {\n return;\n }\n\n this.emit(EVENTS.stats, this._stats);\n this.emit(EVENTS.performance, fpsStatus(this._stats.fps));\n this._stats.fps = 0;\n this._stats.abps = 0;\n this._stats.vbps = 0;\n this._startBpsTime = _nowTime;\n }\n\n resetStats() {\n this._startBpsTime = null;\n this._stats = {\n buf: 0, //ms\n fps: 0,\n abps: 0,\n vbps: 0,\n ts: 0\n }\n }\n\n enableWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.disable();\n }\n }\n\n handlePlayToRenderTimes() {\n const _times = this._times;\n _times.playTimestamp = _times.playStart - _times.playInitStart;\n _times.streamTimestamp = _times.streamStart - _times.playStart;\n _times.streamResponseTimestamp = _times.streamResponse - _times.streamStart;\n _times.demuxTimestamp = _times.demuxStart - _times.streamResponse;\n _times.decodeTimestamp = _times.decodeStart - _times.demuxStart;\n _times.videoTimestamp = _times.videoStart - _times.decodeStart;\n _times.allTimestamp = _times.videoStart - _times.playInitStart;\n this.emit(EVENTS.playToRenderTimes, _times);\n }\n\n getOption() {\n return this._opt;\n }\n\n emitError(errorType, message = '') {\n this.emit(EVENTS.error, errorType, message);\n this.emit(errorType, message);\n }\n\n isControlBarShow() {\n const hasControl = this._opt.hasControl;\n const controlAutoHide = this._opt.controlAutoHide;\n\n let result = hasControl && !controlAutoHide;\n\n if (result) {\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n }\n\n return result;\n }\n\n getControlBarShow(){\n let result = false;\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n return result;\n }\n\n toggleControlBar(isShow) {\n if (this.control) {\n this.control.toggleBar(isShow);\n this.resize();\n }\n }\n}\n","import Player from './player';\nimport Events from \"./utils/events\";\nimport {\n CONTAINER_DATA_SET_KEY,\n DEMUX_TYPE,\n EVENTS,\n EVENTS_ERROR,\n JESSIBUCA_EVENTS,\n PLAYER_PLAY_PROTOCOL,\n SCALE_MODE_TYPE,\n VERSION\n} from \"./constant\";\nimport {\n getElementDataset,\n isEmpty,\n isMobile,\n isNotEmpty,\n removeElementDataset,\n setElementDataset,\n supportWCS,\n uuid16\n} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\nimport Debug from \"./utils/debug\";\n\n\nclass Jessibuca extends Emitter {\n static ERROR = EVENTS_ERROR\n\n static TIMEOUT = {\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n }\n\n constructor(options) {\n super()\n let _opt = options;\n let $container = options.container;\n if (typeof options.container === 'string') {\n $container = document.querySelector(options.container);\n }\n if (!$container) {\n throw new Error('Jessibuca need container option');\n return;\n }\n // check container node name\n if ($container.nodeName === 'CANVAS' || $container.nodeName === 'VIDEO') {\n throw new Error(`Jessibuca container type can not be ${$container.nodeName} type`);\n return;\n }\n\n if (_opt.videoBuffer >= _opt.heartTimeout) {\n throw new Error(`Jessibuca videoBuffer ${_opt.videoBuffer}s must be less than heartTimeout ${_opt.heartTimeout}s`);\n return;\n }\n\n\n if (this._checkHasCreated($container)) {\n throw new Error(`Jessibuca container has been created and can not be created again`, $container);\n return;\n }\n\n // videoBuffer set too long\n if (_opt.videoBuffer > 10) {\n console.warn('Jessibuca', `videoBuffer ${_opt.videoBuffer}s is too long, will black screen for ${_opt.videoBuffer}s , it is recommended to set it to less than 10s`);\n }\n\n if (!$container.classList) {\n throw new Error('Jessibuca container option must be DOM Element');\n return;\n }\n\n $container.classList.add('jessibuca-container');\n setElementDataset($container, CONTAINER_DATA_SET_KEY, uuid16());\n\n delete _opt.container;\n\n // 禁用离屏渲染\n _opt.forceNoOffscreen = true;\n\n // 移动端不支持自动关闭控制栏\n if (isMobile()) {\n _opt.controlAutoHide = false;\n }\n\n // s -> ms\n if (isNotEmpty(_opt.videoBuffer)) {\n _opt.videoBuffer = Number(_opt.videoBuffer) * 1000\n }\n\n // setting\n if (isNotEmpty(_opt.timeout)) {\n if (isEmpty(_opt.loadingTimeout)) {\n _opt.loadingTimeout = _opt.timeout;\n }\n\n if (isEmpty(_opt.heartTimeout)) {\n _opt.heartTimeout = _opt.timeout\n }\n }\n\n this._opt = _opt;\n this.$container = $container;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this._destroyed = false;\n this.events = new Events(this);\n this.debug = new Debug(this);\n this._initPlayer($container, _opt);\n console.log(`Jessibuca version: ${VERSION}`);\n }\n\n /**\n *\n */\n async destroy() {\n this._destroyed = true;\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.player) {\n await this.player.destroy();\n this.player = null;\n }\n if (this.$container) {\n this.$container.classList.remove('jessibuca-container');\n this.$container.classList.remove('jessibuca-fullscreen-web');\n removeElementDataset(this.$container, CONTAINER_DATA_SET_KEY);\n this.$container = null;\n }\n\n this._opt = null;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.off();\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n try {\n this.debug.log('jessibuca', '_initPlayer', JSON.stringify(this.player.getOption()))\n } catch (e) {\n // ignore\n }\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n this._opt = Object.assign(this._opt, options);\n this._opt.url = '';// reset url\n this._initPlayer(this.$container, this._opt);\n }\n\n _bindEvents() {\n // 对外的事件\n Object.keys(JESSIBUCA_EVENTS).forEach((key) => {\n this.player.on(JESSIBUCA_EVENTS[key], (value) => {\n this.emit(key, value)\n })\n })\n }\n\n /**\n * 是否销毁\n * @returns {boolean}\n */\n isDestroyed() {\n return this._destroyed;\n }\n\n /**\n * 是否开启控制台调试打印\n * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n debug: !!value\n })\n }\n\n /**\n *\n */\n mute() {\n this.player.mute(true);\n }\n\n /**\n *\n */\n cancelMute() {\n this.player.mute(false);\n }\n\n /**\n *\n * @param value {number}\n */\n setVolume(value) {\n this.player.volume = value;\n }\n\n /**\n *\n */\n audioResume() {\n this.player.audio && this.player.audio.audioEnabled(true);\n }\n\n /**\n * 设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件\n * @param value {number}\n */\n setTimeout(time) {\n time = Number(time);\n this.player.updateOption({\n timeout: time,\n loadingTimeout: time,\n heartTimeout: time\n })\n }\n\n /**\n *\n * @param type {number}: 0,1,2\n */\n setScaleMode(type) {\n type = Number(type);\n let options = {\n isFullResize: false,\n isResize: false\n }\n switch (type) {\n case SCALE_MODE_TYPE.full:\n options.isFullResize = false;\n options.isResize = false;\n break;\n case SCALE_MODE_TYPE.auto:\n options.isFullResize = false;\n options.isResize = true;\n break;\n case SCALE_MODE_TYPE.fullAuto:\n options.isFullResize = true;\n options.isResize = true;\n break;\n }\n\n this.player.updateOption(options);\n this.resize();\n }\n\n /**\n *\n * @returns {Promise}\n */\n pause() {\n return new Promise((resolve, reject) => {\n if (this.player) {\n this.player.pause().then(() => {\n resolve();\n }).catch((e) => {\n reject(e)\n });\n } else {\n reject('player is null')\n }\n })\n }\n\n /**\n *\n */\n async close() {\n await this.destroy();\n return true;\n }\n\n\n /**\n *\n */\n clearView() {\n this.player.video.clearView()\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n */\n play(url, options = {}) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject('play url is empty')\n return;\n }\n\n if (url) {\n // url 相等的时候。\n if (this._opt.url) {\n // 存在相同的 url\n if (url === this._opt.url) {\n // 正在播放\n if (this.player.playing) {\n resolve();\n } else {\n // pause -> play\n this.clearView();\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'pause -> play and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._opt.url is null and pause error', e)\n reject(e);\n })\n }\n } else {\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'url is null and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n * @private\n */\n _play(url, options = {}) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\n this._opt.playOptions = options;\n // 新的url\n const isHttp = url.indexOf(\"http\") === 0;\n //\n const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket\n //\n const demuxType = (isHttp || url.indexOf(\".flv\") !== -1 || this._opt.isFlv) ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s;\n\n this.player.updateOption({\n protocol,\n demuxType\n })\n\n this.player.once(EVENTS_ERROR.webglAlignmentError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webglAlignmentError')\n this._resetPlayer({openWebglAlignment: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webglAlignmentError and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'webglAlignmentError and play error')\n });\n });\n })\n\n\n this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'media source h265 not support and paused');\n }\n });\n })\n\n // media source full error\n this.player.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source full');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source full and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source full and reset player and play error')\n });\n })\n })\n // media source append buffer error\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer error');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer error and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer error and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source buffer list large');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source buffer list large and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source buffer list large and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer end timeout');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer end timeout and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer end timeout and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mseSourceBufferError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'mse source buffer error and paused');\n }\n })\n })\n //\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs h265 not support and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsWidthOrHeightChange, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play')\n this._resetPlayer({useWCS: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Width Or Height Change reset player and play error')\n });\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsDecodeError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs decode error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs decode error and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsConfigureError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Configure error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs Configure error and paused');\n }\n });\n })\n // wasm。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch((e) => {\n // reject();\n this.debug.warn('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n } else {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and paused');\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'wasm decode error and paused error', e)\n })\n }\n })\n // fetch error\n this.player.once(EVENTS_ERROR.fetchError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'fetch error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'fetch error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS_ERROR.websocketError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'websocket Error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'websocket Error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS.streamEnd, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'stream End and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'stream End and pause play error', e)\n })\n })\n\n // 监听 delay timeout\n this.player.on(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay &&\n (this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes || this.player._opt.heartTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `delay timeout replay time is ${this._heartTimeoutReplayTimes}`)\n this._heartTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.on(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay &&\n (this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes || this.player._opt.loadingTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `loading timeout replay time is ${this._loadingTimeoutReplayTimes}`)\n this._loadingTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._loadingTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n\n if (this.hasLoaded()) {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'hasLoaded and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'decoderWorkerInit and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n })\n }\n })\n }\n\n\n /**\n *\n */\n resize() {\n this.player.resize();\n }\n\n /**\n *\n * @param time {number} s\n */\n setBufferTime(time) {\n time = Number(time)\n // s -> ms\n this.player.updateOption({\n videoBuffer: time * 1000\n })\n // update worker config\n this.player.decoderWorker && this.player.decoderWorker.updateWorkConfig({\n key: 'videoBuffer',\n value: time * 1000\n })\n }\n\n /**\n *\n * @param deg {number}\n */\n setRotate(deg) {\n deg = parseInt(deg, 10)\n const list = [0, 90, 180, 270];\n if (this._opt.rotate === deg || list.indexOf(deg) === -1) {\n return;\n }\n this.player.updateOption({\n rotate: deg\n })\n this.resize();\n }\n\n /**\n *\n * @returns {boolean}\n */\n hasLoaded() {\n return this.player.loaded;\n }\n\n /**\n *\n */\n setKeepScreenOn() {\n this.player.updateOption({\n keepScreenOn: true\n })\n }\n\n /**\n *\n * @param flag {Boolean}\n */\n setFullscreen(flag) {\n const fullscreen = !!flag;\n if (this.player.fullscreen !== fullscreen) {\n this.player.fullscreen = fullscreen;\n }\n }\n\n /**\n *\n * @param filename {string}\n * @param format {string}\n * @param quality {number}\n * @param type {string} download,base64,blob\n */\n screenshot(filename, format, quality, type) {\n\n if (!this.player.video) {\n return ''\n }\n\n return this.player.video.screenshot(filename, format, quality, type)\n }\n\n /**\n *\n * @param fileName {string}\n * @param fileType {string}\n * @returns {Promise}\n */\n startRecord(fileName, fileType) {\n return new Promise((resolve, reject) => {\n if (this.player.playing) {\n this.player.startRecord(fileName, fileType)\n resolve();\n } else {\n reject();\n }\n })\n }\n\n stopRecordAndSave() {\n if (this.player.recording) {\n this.player.stopRecordAndSave();\n }\n }\n\n /**\n *\n * @returns {Boolean}\n */\n isPlaying() {\n return this.player ? this.player.playing : false;\n }\n\n /**\n * 是否静音状态\n * @returns {Boolean}\n */\n isMute() {\n return this.player.audio ? this.player.audio.isMute : true;\n }\n\n /**\n * 是否在录制视频\n * @returns {*}\n */\n isRecording() {\n return this.player.recorder.recording;\n }\n\n _checkHasCreated(element) {\n if (!element) return false;\n const gbProV = getElementDataset(element, CONTAINER_DATA_SET_KEY);\n if (gbProV) {\n return true;\n }\n return false;\n }\n\n\n toggleControlBar(isShow) {\n if (this.isDestroyed()) {\n return;\n }\n\n if (this.player) {\n this.player.toggleControlBar(isShow);\n }\n }\n\n getControlBarShow() {\n if (this.isDestroyed()) {\n return false;\n }\n let result = false;\n if (this.player) {\n result = this.player.getControlBarShow();\n }\n return result;\n }\n\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","CONTAINER_DATA_SET_KEY","VERSION","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","init","initVideo","render","playAudio","initAudio","kBps","decode","audioCode","videoCode","wasmError","WASM_ERROR","invalidNalUnitSize","MEDIA_TYPE","video","FLV_MEDIA_TYPE","WORKER_SEND_TYPE","audioDecode","videoDecode","close","updateConfig","EVENTS","webFullscreen","decoderWorkerInit","playing","pause","mute","load","loading","videoInfo","timeUpdate","audioInfo","log","error","delayTimeout","stats","performance","recording","recordingTimestamp","recordStart","recordEnd","recordCreateError","buffer","videoFrame","start","metadata","resize","streamEnd","streamSuccess","streamMessage","streamError","volumechange","volume","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","mseSourceBufferFull","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","webcodecsConfigureError","webcodecsDecodeError","webcodecsWidthOrHeightChange","mediaSourceH265NotSupport","mediaSourceFull","mediaSourceAppendBufferError","mediaSourceBufferListLarge","mediaSourceAppendBufferEndTimeout","wasmDecodeError","webglAlignmentError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","CANVAS_RENDER_TYPE","webcodecs","webgl","offscreen","ENCODED_VIDEO_TYPE","key","delta","MP4_CODECS","avc","hev","MEDIA_SOURCE_STATE","ended","closed","AUDIO_SYNC_VIDEO_DIFF","HOT_KEY","esc","arrowUp","arrowDown","WCS_ERROR","keyframeIsRequiredError","canNotDecodeClosedCodec","FETCH_ERROR","abortError1","abortError2","abort","FRAME_HEADER_EX","PACKET_TYPE_EX","PACKET_TYPE_SEQ_START","PACKET_TYPE_FRAMES","PACKET_TYPE_FRAMESX","FRAME_TYPE_EX","FT_KEY","FT_INTER","Debug","constructor","master","name","_opt","args","console","warn","Events","destroys","proxy","bind","target","callback","option","Array","isArray","map","item","addEventListener","removeEventListener","push","forEach","event","player","Object","defineProperty","get","clientRect","$container","getBoundingClientRect","width","Math","max","clientWidth","height","clientHeight","rect","noop","supportOffscreen","$canvas","transferControlToOffscreen","supportOffscreenV2","OffscreenCanvas","createContextGL","gl","validContextNames","nameIndex","length","contextName","contextOptions","preserveDrawingBuffer","getContext","e","getParameter","dataURLToFile","dataURL","arr","split","bstr","atob","type","replace","n","u8arr","Uint8Array","charCodeAt","File","now","Date","getTime","WebAssembly","instantiate","module","Module","of","Instance","clamp","num","a","b","min","setStyle","element","value","keys","style","getStyle","numberType","getComputedStyle","getPropertyValue","parseFloat","getNowTime","calculationRate","totalSize","lastTime","size","thisTime","diffTime","isMobile","test","window","navigator","userAgent","toLowerCase","isPad","isAndroid","UA","supportWCS","uuid16","c","r","random","v","toString","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","codec","description","isFullScreen","screenfull","isFullscreen","bpsSize","parseInt","isNaN","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","document","createElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","supportMediaStreamTrack","MediaStreamTrackGenerator","isEmpty","undefined","isBoolean","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","formatTimeTips","time","hour","floor","sec","round","getTarget","srcElement","isWebglRenderSupport","getBrowser","UserAgent","browserInfo","browserArray","IE","ActiveXObject","Chrome","indexOf","Firefox","Opera","Safari","Edge","QQBrowser","WeixinBrowser","i","versions","match","mt","mimeTypes","version","closeVideoFrame","removeElement","parentNode","removeChild","hevcEncoderNalePacketNotLength","oneNALBuffer","isIframe","idrBit","nIdrBit","tmp","arrayBuffer","byteLength","set","isFalse","getElementDataset","dataset","getAttribute","setElementDataset","setAttribute","removeElementDataset","removeAttribute","screenfullChange","emit","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","stringList","includes","JSON","stringify","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","evts","liveEvents","len","vertexShaderScript","join","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","w","y","u","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","resetInit","encType","encTypeCode","$videoElement","updateVideoInfo","clearView","_global","global","this","bom","opts","autoBom","Blob","String","fromCharCode","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","status","click","node","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","prototype","URL","webkitURL","createElementNS","rel","href","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","isControlBarShow","resizeWidth","resizeHeight","wScale","hScale","scale","transform","VideoLoader","muted","disablePictureInPicture","poster","_delayPlay","trackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","canvasContext","fixChromeVideoFlashBug","_play","timeStamp","isPlaying","currentTime","src","stop","browser","backdropFilter","translateZ","readyState","_getVideoReadyState","isNow","$video","canvas","videoWidth","videoHeight","write","objectFill","objectFit","paused","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","_prevVolume","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isMute","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","setValueAtTime","disconnect","state","resume","suspend","isStateRunning","isStateSuspended","Audio","FetchLoader","abortController","AbortController","streamRate","rate","fetchStream","demux","_times","fetchOptions","assign","signal","headers","res","getReader","fetchNext","read","done","dispatch","errorString","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","RecordRTCLoader","fileName","fileType","isRecording","recordingInterval","_reset","setFileName","recordTime","startRecord","mimeType","onTimeStamp","timestamp","disableLogs","stream","captureStream","audioStream","getAudioTracks","audioTrack","enabled","addTrack","recorder","RecordRTC","startRecording","setInterval","stopRecordAndSave","stopRecording","getBlob","clearInterval","Recorder","DecoderWorker","decoderWorker","Worker","_initDecoderWorker","postMessage","cmd","terminate","onmessage","_initWork","code","handleRender","updateStats","buf","delay","handlePlayToRenderTimes","emitError","decodeVideo","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","mseDecoder","getSourceBufferUpdating","payload","_doDecoderDecode","_doDecode","cts","pushBuffer","webcodecsDecoder","_decodeEnhancedH265Video","flags","frameTypeEx","packetEx","codecId","ArrayBuffer","tmp32","Uint32Array","isAV1","extraData","payloadBuffer","_isEnhancedH265Header","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp8","t","abps","vbps","need","next","combine","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","Demux","ExpGolomb","uint8array","TAG","_buffer","_buffer_index","_total_bytes","_total_bits","_current_word","_current_word_bits_left","_fillCurrentWord","buffer_bytes_left","bytes_read","word","readBits","bits","bits_need_left","bits_read_next","result2","readBool","readByte","_skipLeadingZero","zero_count","readUEG","leading_zeros","readSEG","SPSParser","_ebsp2rbsp","src_length","dst","dst_idx","parseSPS","rbsp","gb","profile_idc","level_idc","profile_string","getProfileString","level_string","getLevelString","chroma_format_idc","chroma_format","chroma_format_table","bit_depth","scaling_list_count","_skipScalingList","pic_order_cnt_type","num_ref_frames_in_pic_order_cnt_cycle","ref_frames","pic_width_in_mbs_minus1","pic_height_in_map_units_minus1","frame_mbs_only_flag","frame_crop_left_offset","frame_crop_right_offset","frame_crop_top_offset","frame_crop_bottom_offset","frame_cropping_flag","sar_width","sar_height","fps_fixed","fps_num","fps_den","vui_parameters_present_flag","aspect_ratio_idc","sar_w_table","sar_h_table","num_units_in_tick","time_scale","sarScale","crop_unit_x","crop_unit_y","sub_wc","sub_hc","codec_width","codec_height","present_width","ceil","chroma_format_string","getChromaFormatString","frame_rate","fixed","sar_ratio","codec_size","present_size","count","last_scale","next_scale","delta_scale","chroma","parseAVCDecoderConfigurationRecord","meta","avcProfile","_naluLengthSize","spsCount","offset","getUint16","sps","codecWidth","codecHeight","presentWidth","presentHeight","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","timescale","ppsCount","videoType","WebcodecsDecoder","hasInit","isDecodeFirstIIframe","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","isDecodeStateClosed","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","display","overflow","pointerEvents","zIndex","playerWidth","playerHeight","contentDocument","defaultView","screenfullH5Control","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$qualityMenu","$volume","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","resumeAudioAfterPause","$volumePanelWrap","lastVolume","_lastVolume","isVolumeDroging","$recordingStop","startDelayControlHidden","stopDelayControlHidden","delayHiddenTimeout","clearTimeout","addHotkey","tag","activeElement","tagName","toUpperCase","editable","keyCode","preventDefault","Control","template","property","observer","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","toggleBar","getBarIsShow","nodeName","visibilityState","_isPlayingBeforePageHidden","enableWakeLock","MP4","types","avc1","hvc1","hvcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","hasOwnProperty","constants","FTYP","STSD_PREFIX","STTS","STSC","STCO","STSZ","HDLR_VIDEO","HDLR_AUDIO","DREF","SMHD","VMHD","box","datas","call","arguments","arrayCount","generateInitSegment","duration","trackId","id","xmhd","channelCount","audioSampleRate","configSize","concat","avcc","track","baseMediaDecodeTime","sequenceNumber","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","isNonSync","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","firstRenderTime","mediaSourceAppendBufferFull","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","dts","_decodeVideo","metaData","metaBox","appendBuffer","bytes","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","abortSourceBuffer","removeSourceBuffer","endOfStream","dropSourceBuffer","isDropping","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","dataURI","isEnabled","wakeLock","err","disable","hidden","Promise","resolve","playPromise","release","Player","container","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_checkStatsInterval","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","clearStatsInterval","releaseWakeLock","resetStats","updateOption","contains","isDebug","reject","checkLoadingTimeout","checkStatsInterval","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","_nowTime","getOption","errorType","getControlBarShow","toggleControlBar","isShow","Jessibuca","Error","_checkHasCreated","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_destroyed","_initPlayer","_bindEvents","_resetPlayer","isDestroyed","setDebug","cancelMute","audioResume","setScaleMode","playOptions","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen","gbProV"],"mappings":"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"} \ No newline at end of file diff --git a/demo/public/pro/multi-demo.html b/demo/public/pro/multi-demo.html index c2546966..69f696fc 100644 --- a/demo/public/pro/multi-demo.html +++ b/demo/public/pro/multi-demo.html @@ -128,17 +128,17 @@ function create() { jessibucaMulti = new JessibucaProMulti({ container: $container, - split: 2, + split: 2,// default isResize: false, decoder: './js/decoder-pro.js', debug: true, useMSE: true, - decoderErrorAutoWasm:false, + decoderErrorAutoWasm: false, useSIMD: true, debugLevel: "debug", hasAudio: false, - loadingTimeout:3, - loadingTimeoutReplayTimes:10, + loadingTimeout: 3, + loadingTimeoutReplayTimes: 10, showBandwidth: showOperateBtns, // 显示网速 showPerformance: showOperateBtns, // 显示性能 operateBtns: { @@ -151,8 +151,8 @@ quality: showOperateBtns, performance: showOperateBtns, }, - draggable:$supportDraggable.checked === true, - supportDblclickContainerFullscreen:$supportContainerFullscreen.checked === true, + draggable: $supportDraggable.checked === true, + supportDblclickContainerFullscreen: $supportContainerFullscreen.checked === true, // supportMousemoveEvent: true, }) @@ -188,12 +188,33 @@ console.log(`stats-${index}`, stats); }) - jessibucaMulti.on(JessibucaProMulti.EVENTS.error, (selectedIndex,errorType,message) => { - console.error('error', selectedIndex,errorType,message); + jessibucaMulti.on(JessibucaProMulti.EVENTS.error, (selectedIndex, errorType, message) => { + console.error('error', selectedIndex, errorType, message); + }) + + jessibucaMulti.on(JessibucaProMulti.MULTI_EVENTS.drop, (selectedIndex, event, options) => { + console.log('drop', selectedIndex, options); + updateExtendDom(); }) } create(); + updateExtendDom(); + + function updateExtendDom() { + const playerUUidList = jessibucaMulti.getWindowUuidList(); + playerUUidList.forEach((uuid, index) => { + const playerItem = jessibucaMulti.getWindowItem(uuid); + const player = playerItem.player; + if (player) { + player.setExtendHtml(`
+ 排序Index:${playerItem.order || playerItem.index} +
+ Uuid:${playerItem.uuid} +
`) + } + }) + } function play() { var href = $playHref.value; @@ -257,12 +278,14 @@ if (jessibucaMulti) { split = Number(split); jessibucaMulti.arrangeWindow(split); + updateExtendDom(); } } function updateSplitSpecial(type) { if (jessibucaMulti) { jessibucaMulti.arrangeWindow(type); + updateExtendDom(); } } @@ -283,7 +306,7 @@ function handleInitPlayerBySelectWindow() { if (jessibucaMulti) { jessibucaMulti.initSingle().then(() => { - + updateExtendDom(); }).catch((e) => { }); diff --git a/dist/decoder.js b/dist/decoder.js index 954ace6f..a38a932b 100644 --- a/dist/decoder.js +++ b/dist/decoder.js @@ -1 +1 @@ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),a=n(r),i=n(t);function s(e,r){return e(r={exports:{}},r.exports),r.exports}var l=s((function(e){var r=void 0!==r?r:{},t=(r={print:function(e){console.log("Jessibuca: [worker]:",e)},printErr:function(e){console.warn("Jessibuca: [worker]:",e),postMessage({cmd:"wasmError",message:e})}},Object.assign({},r)),n="./this.program",s="object"==typeof window,l="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!s&&!u&&!l;if(r.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var d,f,p,m,h,g,v="";if(u){if("object"!=typeof process)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");v=l?o.default.dirname(v)+"/":__dirname+"/",g=()=>{h||(m=a.default,h=o.default)},d=function(e,r){return g(),e=h.normalize(e),m.readFileSync(e,r?void 0:"utf8")},p=e=>{var r=d(e,!0);return r.buffer||(r=new Uint8Array(r)),F(r.buffer),r},f=(e,r,t)=>{g(),e=h.normalize(e),m.readFile(e,(function(e,n){e?t(e):r(n.buffer)}))},process.argv.length>1&&(n=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=r,process.on("uncaughtException",(function(e){if(!(e instanceof Pt))throw e})),process.on("unhandledRejection",(function(e){throw e})),r.inspect=function(){return"[Emscripten Module object]"}}else if(c){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(d=function(e){return read(e)}),p=function(e){let r;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(r=read(e,"binary"),F("object"==typeof r),r)},f=function(e,r,t){setTimeout((()=>r(p(e))),0)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!s&&!l)throw new Error("environment detection error");if(l?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");d=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},l&&(p=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),f=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var y,E,w,b=r.print||console.log.bind(console),_=r.printErr||console.warn.bind(console);function T(e){T.shown||(T.shown={}),T.shown[e]||(T.shown[e]=1,_(e))}function k(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge("Module."+e+" has been replaced with plain "+t+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function S(e,r){var t="'"+e+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";return r&&(t+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),t}function C(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge(S(e,t))}})}function P(e,t){Object.getOwnPropertyDescriptor(r,e)||(r[e]=()=>ge(S(e,t)))}Object.assign(r,t),t=null,y="fetchSettings",Object.getOwnPropertyDescriptor(r,y)&&ge("`Module."+y+"` was supplied but `"+y+"` not included in INCOMING_MODULE_JS_API"),r.arguments&&r.arguments,k("arguments","arguments_"),r.thisProgram&&(n=r.thisProgram),k("thisProgram","thisProgram"),r.quit&&r.quit,k("quit","quit_"),F(void 0===r.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.read,"Module.read option was removed (modify read_ in JS)"),F(void 0===r.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),F(void 0===r.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),F(void 0===r.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),F(void 0===r.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),k("read","read_"),k("readAsync","readAsync"),k("readBinary","readBinary"),k("setWindowTitle","setWindowTitle"),F(!c,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."),r.wasmBinary&&(E=r.wasmBinary),k("wasmBinary","wasmBinary"),r.noExitRuntime,k("noExitRuntime","noExitRuntime"),"object"!=typeof WebAssembly&&ge("no native wasm support detected");var A=!1;function F(e,r){e||ge("Assertion failed"+(r?": "+r:""))}var D="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function O(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&D)return D.decode(e.subarray(r,o));for(var a="";r>10,56320|1023&u)}}else a+=String.fromCharCode((31&i)<<6|s)}else a+=String.fromCharCode(i)}return a}function R(e,r){return e?O(U,e,r):""}function M(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;s>1114111&&T("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function N(e,r,t){return F("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),M(e,U,r,t)}function I(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var L,x,U,B,j,$,W,z,H,G="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function V(e,r){F(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&j[n];)++n;if((t=n<<1)-e>32&&G)return G.decode(U.subarray(e,t));for(var a="",i=0;!(i>=r/2);++i){var s=B[e+2*i>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function q(e,r,t){if(F(r%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),F("number"==typeof t,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,a=0;a>1]=i,r+=2}return B[r>>1]=0,r-n}function Y(e){return 2*e.length}function X(e,r){F(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var t=0,n="";!(t>=r/4);){var o=$[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var a=o-65536;n+=String.fromCharCode(55296|a>>10,56320|1023&a)}else n+=String.fromCharCode(o)}return n}function K(e,r,t){if(F(r%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),F("number"==typeof t,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,a=0;a=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a);if($[r>>2]=i,(r+=4)+4>o)break}return $[r>>2]=0,r-n}function J(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}function Q(e){var r=I(e)+1,t=yt(r);return t&&M(e,x,t,r),t}function Z(e){L=e,r.HEAP8=x=new Int8Array(e),r.HEAP16=B=new Int16Array(e),r.HEAP32=$=new Int32Array(e),r.HEAPU8=U=new Uint8Array(e),r.HEAPU16=j=new Uint16Array(e),r.HEAPU32=W=new Uint32Array(e),r.HEAPF32=z=new Float32Array(e),r.HEAPF64=H=new Float64Array(e)}var ee=5242880;r.TOTAL_STACK&&F(ee===r.TOTAL_STACK,"the stack size can no longer be determined at runtime");var re,te=r.INITIAL_MEMORY||67108864;function ne(){var e=Ct();F(0==(3&e)),$[e>>2]=34821223,$[e+4>>2]=2310721022,$[0]=1668509029}function oe(){if(!A){var e=Ct(),r=W[e>>2],t=W[e+4>>2];34821223==r&&2310721022==t||ge("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+t.toString(16)+" 0x"+r.toString(16)),1668509029!==$[0]&&ge("Runtime error: The application has corrupted its heap memory area (address zero)!")}}k("INITIAL_MEMORY","INITIAL_MEMORY"),F(te>=ee,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+te+"! (TOTAL_STACK="+ee+")"),F("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),F(!r.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),F(67108864==te,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var ae=[],ie=[],se=[],le=!1;F(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var ue=0,ce=null,de=null,fe={};function pe(e){for(var r=e;;){if(!fe[e])return e;e=r+Math.random()}}function me(e){ue++,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(F(!fe[e]),fe[e]=1,null===ce&&"undefined"!=typeof setInterval&&(ce=setInterval((function(){if(A)return clearInterval(ce),void(ce=null);var e=!1;for(var r in fe)e||(e=!0,_("still waiting on run dependencies:")),_("dependency: "+r);e&&_("(end of list)")}),1e4))):_("warning: run dependency added without ID")}function he(e){if(ue--,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(F(fe[e]),delete fe[e]):_("warning: run dependency removed without ID"),0==ue&&(null!==ce&&(clearInterval(ce),ce=null),de)){var t=de;de=null,t()}}function ge(e){throw r.onAbort&&r.onAbort(e),_(e="Aborted("+e+")"),A=!0,new WebAssembly.RuntimeError(e)}var ve,ye,Ee,we="data:application/octet-stream;base64,";function be(e){return e.startsWith(we)}function _e(e){return e.startsWith("file://")}function Te(e,t){return function(){var n=e,o=t;return t||(o=r.asm),F(le,"native function `"+n+"` called before runtime initialization"),o[e]||F(o[e],"exported native function `"+n+"` not found"),o[e].apply(null,arguments)}}function ke(e){try{if(e==ve&&E)return new Uint8Array(E);if(p)return p(e);throw"both async and sync fetching of the wasm failed"}catch(e){ge(e)}}function Se(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Pe(n)():Pe(n)(t.arg):n(void 0===t.arg?null:t.arg)}else t(r)}}function Ce(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var r,t=(r=e,T("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),r);return e===t?e:t+" ["+e+"]"}))}function Pe(e){return re.get(e)}be(ve="decoder.wasm")||(ve=function(e){return r.locateFile?r.locateFile(e,v):v+e}(ve));var Ae={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Ae.isAbs(e),t="/"===e.substr(-1);return(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Ae.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Ae.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ae.normalize(e.join("/"))},join2:(e,r)=>Ae.normalize(e+"/"+r)};var Fe={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:Ie.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Ae.isAbs(n)}return(r?"/":"")+(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=Fe.resolve(e).substr(1),r=Fe.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=ht(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(b(O(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(b(O(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(_(O(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(_(O(e.output,0)),e.output=[])}}};function Oe(e){e=function(e,r){return F(r,"alignment argument is required"),Math.ceil(e/r)*r}(e,65536);var r=Tt(65536,e);return r?(function(e,r){U.fill(0,e,e+r)}(r,e),r):0}var Re={ops_table:null,mount:function(e){return Re.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(Ie.isBlkdev(t)||Ie.isFIFO(t))throw new Ie.ErrnoError(63);Re.ops_table||(Re.ops_table={dir:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,lookup:Re.node_ops.lookup,mknod:Re.node_ops.mknod,rename:Re.node_ops.rename,unlink:Re.node_ops.unlink,rmdir:Re.node_ops.rmdir,readdir:Re.node_ops.readdir,symlink:Re.node_ops.symlink},stream:{llseek:Re.stream_ops.llseek}},file:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:{llseek:Re.stream_ops.llseek,read:Re.stream_ops.read,write:Re.stream_ops.write,allocate:Re.stream_ops.allocate,mmap:Re.stream_ops.mmap,msync:Re.stream_ops.msync}},link:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,readlink:Re.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:Ie.chrdev_stream_ops}});var o=Ie.createNode(e,r,t,n);return Ie.isDir(o.mode)?(o.node_ops=Re.ops_table.dir.node,o.stream_ops=Re.ops_table.dir.stream,o.contents={}):Ie.isFile(o.mode)?(o.node_ops=Re.ops_table.file.node,o.stream_ops=Re.ops_table.file.stream,o.usedBytes=0,o.contents=null):Ie.isLink(o.mode)?(o.node_ops=Re.ops_table.link.node,o.stream_ops=Re.ops_table.link.stream):Ie.isChrdev(o.mode)&&(o.node_ops=Re.ops_table.chrdev.node,o.stream_ops=Re.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ie.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ie.isDir(e.mode)?r.size=4096:Ie.isFile(e.mode)?r.size=e.usedBytes:Ie.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&Re.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ie.genericErrors[44]},mknod:function(e,r,t,n){return Re.createNode(e,r,t,n)},rename:function(e,r,t){if(Ie.isDir(e.mode)){var n;try{n=Ie.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ie.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ie.lookupNode(e,r);for(var n in t.contents)throw new Ie.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=Re.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ie.isLink(e.mode))throw new Ie.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(F(i>=0),i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||n+t{if(!(e=Fe.resolve(Ie.cwd(),e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new Ie.ErrnoError(32);for(var t=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=Ie.root,o="/",a=0;a40)throw new Ie.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(Ie.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%Ie.nameTable.length},hashAddNode:e=>{var r=Ie.hashName(e.parent.id,e.name);e.name_next=Ie.nameTable[r],Ie.nameTable[r]=e},hashRemoveNode:e=>{var r=Ie.hashName(e.parent.id,e.name);if(Ie.nameTable[r]===e)Ie.nameTable[r]=e.name_next;else for(var t=Ie.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=Ie.mayLookup(e);if(t)throw new Ie.ErrnoError(t,e);for(var n=Ie.hashName(e.id,r),o=Ie.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return Ie.lookup(e,r)},createNode:(e,r,t,n)=>{F("object"==typeof e);var o=new Ie.FSNode(e,r,t,n);return Ie.hashAddNode(o),o},destroyNode:e=>{Ie.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=Ie.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>Ie.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var r=Ie.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{Ie.lookupNode(e,r);return 20}catch(e){}return Ie.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=Ie.lookupNode(e,r)}catch(e){return e.errno}var o=Ie.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ie.isDir(n.mode))return 54;if(Ie.isRoot(n)||Ie.getPath(n)===Ie.cwd())return 10}else if(Ie.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?Ie.isLink(e.mode)?32:Ie.isDir(e.mode)&&("r"!==Ie.flagsToPermissionString(r)||512&r)?31:Ie.nodePermissions(e,Ie.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=Ie.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!Ie.streams[t])return t;throw new Ie.ErrnoError(33)},getStream:e=>Ie.streams[e],createStream:(e,r,t)=>{Ie.FSStream||(Ie.FSStream=function(){this.shared={}},Ie.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new Ie.FSStream,e);var n=Ie.nextfd(r,t);return e.fd=n,Ie.streams[n]=e,e},closeStream:e=>{Ie.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=Ie.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Ie.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{Ie.devices[e]={stream_ops:r}},getDevice:e=>Ie.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),Ie.syncFSRequests++,Ie.syncFSRequests>1&&_("warning: "+Ie.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ie.getMounts(Ie.root.mount),n=0;function o(e){return F(Ie.syncFSRequests>0),Ie.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)}))},mount:(e,r,t)=>{if("string"==typeof e)throw e;var n,o="/"===t,a=!t;if(o&&Ie.root)throw new Ie.ErrnoError(10);if(!o&&!a){var i=Ie.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,Ie.isMountpoint(n))throw new Ie.ErrnoError(10);if(!Ie.isDir(n.mode))throw new Ie.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},l=e.mount(s);return l.mount=s,s.root=l,o?Ie.root=l:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),l},unmount:e=>{var r=Ie.lookupPath(e,{follow_mount:!1});if(!Ie.isMountpoint(r.node))throw new Ie.ErrnoError(28);var t=r.node,n=t.mounted,o=Ie.getMounts(n);Object.keys(Ie.nameTable).forEach((e=>{for(var r=Ie.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ie.destroyNode(r),r=t}})),t.mounted=null;var a=t.mount.mounts.indexOf(n);F(-1!==a),t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=Ie.lookupPath(e,{parent:!0}).node,o=Ae.basename(e);if(!o||"."===o||".."===o)throw new Ie.ErrnoError(28);var a=Ie.mayCreate(n,o);if(a)throw new Ie.ErrnoError(a);if(!n.node_ops.mknod)throw new Ie.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=void 0!==r?r:438,r&=4095,r|=32768,Ie.mknod(e,r,0)),mkdir:(e,r)=>(r=void 0!==r?r:511,r&=1023,r|=16384,Ie.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,Ie.mknod(e,r,t)),symlink:(e,r)=>{if(!Fe.resolve(e))throw new Ie.ErrnoError(44);var t=Ie.lookupPath(r,{parent:!0}).node;if(!t)throw new Ie.ErrnoError(44);var n=Ae.basename(r),o=Ie.mayCreate(t,n);if(o)throw new Ie.ErrnoError(o);if(!t.node_ops.symlink)throw new Ie.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o=Ae.dirname(e),a=Ae.dirname(r),i=Ae.basename(e),s=Ae.basename(r);if(t=Ie.lookupPath(e,{parent:!0}).node,n=Ie.lookupPath(r,{parent:!0}).node,!t||!n)throw new Ie.ErrnoError(44);if(t.mount!==n.mount)throw new Ie.ErrnoError(75);var l,u=Ie.lookupNode(t,i),c=Fe.relative(e,a);if("."!==c.charAt(0))throw new Ie.ErrnoError(28);if("."!==(c=Fe.relative(r,o)).charAt(0))throw new Ie.ErrnoError(55);try{l=Ie.lookupNode(n,s)}catch(e){}if(u!==l){var d=Ie.isDir(u.mode),f=Ie.mayDelete(t,i,d);if(f)throw new Ie.ErrnoError(f);if(f=l?Ie.mayDelete(n,s,d):Ie.mayCreate(n,s))throw new Ie.ErrnoError(f);if(!t.node_ops.rename)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(u)||l&&Ie.isMountpoint(l))throw new Ie.ErrnoError(10);if(n!==t&&(f=Ie.nodePermissions(t,"w")))throw new Ie.ErrnoError(f);Ie.hashRemoveNode(u);try{t.node_ops.rename(u,n,s)}catch(e){throw e}finally{Ie.hashAddNode(u)}}},rmdir:e=>{var r=Ie.lookupPath(e,{parent:!0}).node,t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!0);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.rmdir)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.rmdir(r,t),Ie.destroyNode(n)},readdir:e=>{var r=Ie.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new Ie.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=Ie.lookupPath(e,{parent:!0}).node;if(!r)throw new Ie.ErrnoError(44);var t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!1);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.unlink)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.unlink(r,t),Ie.destroyNode(n)},readlink:e=>{var r=Ie.lookupPath(e).node;if(!r)throw new Ie.ErrnoError(44);if(!r.node_ops.readlink)throw new Ie.ErrnoError(28);return Fe.resolve(Ie.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=Ie.lookupPath(e,{follow:!r}).node;if(!t)throw new Ie.ErrnoError(44);if(!t.node_ops.getattr)throw new Ie.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>Ie.stat(e,!0),chmod:(e,r,t)=>{var n;"string"==typeof e?n=Ie.lookupPath(e,{follow:!t}).node:n=e;if(!n.node_ops.setattr)throw new Ie.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{Ie.chmod(e,r,!0)},fchmod:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);Ie.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;"string"==typeof e?o=Ie.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new Ie.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{Ie.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=Ie.getStream(e);if(!n)throw new Ie.ErrnoError(8);Ie.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new Ie.ErrnoError(28);var t;"string"==typeof e?t=Ie.lookupPath(e,{follow:!0}).node:t=e;if(!t.node_ops.setattr)throw new Ie.ErrnoError(63);if(Ie.isDir(t.mode))throw new Ie.ErrnoError(31);if(!Ie.isFile(t.mode))throw new Ie.ErrnoError(28);var n=Ie.nodePermissions(t,"w");if(n)throw new Ie.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);if(0==(2097155&t.flags))throw new Ie.ErrnoError(28);Ie.truncate(t.node,r)},utime:(e,r,t)=>{var n=Ie.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n,o,a)=>{if(""===e)throw new Ie.ErrnoError(44);var i;if(n=void 0===n?438:n,n=64&(t="string"==typeof t?Ie.modeStringToFlags(t):t)?4095&n|32768:0,"object"==typeof e)i=e;else{e=Ae.normalize(e);try{i=Ie.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Ie.ErrnoError(20)}else i=Ie.mknod(e,n,0),s=!0;if(!i)throw new Ie.ErrnoError(44);if(Ie.isChrdev(i.mode)&&(t&=-513),65536&t&&!Ie.isDir(i.mode))throw new Ie.ErrnoError(54);if(!s){var l=Ie.mayOpen(i,t);if(l)throw new Ie.ErrnoError(l)}512&t&&Ie.truncate(i,0),t&=-131713;var u=Ie.createStream({node:i,path:Ie.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1},o,a);return u.stream_ops.open&&u.stream_ops.open(u),!r.logReadFiles||1&t||(Ie.readFiles||(Ie.readFiles={}),e in Ie.readFiles||(Ie.readFiles[e]=1)),u},close:e=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Ie.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Ie.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new Ie.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(1==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.read)throw new Ie.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.write)throw new Ie.ErrnoError(28);e.seekable&&1024&e.flags&&Ie.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(r<0||t<=0)throw new Ie.ErrnoError(28);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(!Ie.isFile(e.node.mode)&&!Ie.isDir(e.node.mode))throw new Ie.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ie.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o,a)=>{if(0!=(2&o)&&0==(2&a)&&2!=(2097155&e.flags))throw new Ie.ErrnoError(2);if(1==(2097155&e.flags))throw new Ie.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ie.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o,a)},msync:(e,r,t,n,o)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new Ie.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ie.open(e,r.flags),o=Ie.stat(e).size,a=new Uint8Array(o);return Ie.read(n,a,0,o,0),"utf8"===r.encoding?t=O(a,0):"binary"===r.encoding&&(t=a),Ie.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=Ie.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(I(r)+1),a=M(r,o,0,o.length);Ie.write(n,o,0,a,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ie.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ie.close(n)},cwd:()=>Ie.currentPath,chdir:e=>{var r=Ie.lookupPath(e,{follow:!0});if(null===r.node)throw new Ie.ErrnoError(44);if(!Ie.isDir(r.node.mode))throw new Ie.ErrnoError(54);var t=Ie.nodePermissions(r.node,"x");if(t)throw new Ie.ErrnoError(t);Ie.currentPath=r.path},createDefaultDirectories:()=>{Ie.mkdir("/tmp"),Ie.mkdir("/home"),Ie.mkdir("/home/web_user")},createDefaultDevices:()=>{Ie.mkdir("/dev"),Ie.registerDevice(Ie.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),Ie.mkdev("/dev/null",Ie.makedev(1,3)),De.register(Ie.makedev(5,0),De.default_tty_ops),De.register(Ie.makedev(6,0),De.default_tty1_ops),Ie.mkdev("/dev/tty",Ie.makedev(5,0)),Ie.mkdev("/dev/tty1",Ie.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(u)try{var r=i.default;return function(){return r.randomBytes(1)[0]}}catch(e){}return function(){ge("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();Ie.createDevice("/dev","random",e),Ie.createDevice("/dev","urandom",e),Ie.mkdir("/dev/shm"),Ie.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Ie.mkdir("/proc");var e=Ie.mkdir("/proc/self");Ie.mkdir("/proc/self/fd"),Ie.mount({mount:()=>{var r=Ie.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=+r,n=Ie.getStream(t);if(!n)throw new Ie.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?Ie.createDevice("/dev","stdin",r.stdin):Ie.symlink("/dev/tty","/dev/stdin"),r.stdout?Ie.createDevice("/dev","stdout",null,r.stdout):Ie.symlink("/dev/tty","/dev/stdout"),r.stderr?Ie.createDevice("/dev","stderr",null,r.stderr):Ie.symlink("/dev/tty1","/dev/stderr");var e=Ie.open("/dev/stdin",0),t=Ie.open("/dev/stdout",1),n=Ie.open("/dev/stderr",1);F(0===e.fd,"invalid handle for stdin ("+e.fd+")"),F(1===t.fd,"invalid handle for stdout ("+t.fd+")"),F(2===n.fd,"invalid handle for stderr ("+n.fd+")")},ensureErrnoError:()=>{Ie.ErrnoError||(Ie.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){for(var r in this.errno=e,Ne)if(Ne[r]===e){this.code=r;break}},this.setErrno(e),this.message=Me[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=Ce(this.stack))},Ie.ErrnoError.prototype=new Error,Ie.ErrnoError.prototype.constructor=Ie.ErrnoError,[44].forEach((e=>{Ie.genericErrors[e]=new Ie.ErrnoError(e),Ie.genericErrors[e].stack=""})))},staticInit:()=>{Ie.ensureErrnoError(),Ie.nameTable=new Array(4096),Ie.mount(Re,{},"/"),Ie.createDefaultDirectories(),Ie.createDefaultDevices(),Ie.createSpecialDirectories(),Ie.filesystems={MEMFS:Re}},init:(e,t,n)=>{F(!Ie.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ie.init.initialized=!0,Ie.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,Ie.createStandardStreams()},quit:()=>{Ie.init.initialized=!1,_t();for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=Ie.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{e=(n=Ie.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Ie.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=Ae.basename(e),n=Ie.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:Ie.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Ae.join2(e,a);try{Ie.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),i=Ie.getMode(n,o);return Ie.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:Ie.getPath(e),i=r?Ae.join2(e,r):e);var s=Ie.getMode(n,o),l=Ie.create(i,s);if(t){if("string"==typeof t){for(var u=new Array(t.length),c=0,d=t.length;c{var o=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),a=Ie.getMode(!!t,!!n);Ie.createDevice.major||(Ie.createDevice.major=64);var i=Ie.makedev(Ie.createDevice.major++,0);return Ie.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i=0,s=0;s{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!d)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ht(d(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Ie.ErrnoError(29)}},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,a=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,i=1048576;o||(i=n);var s=this;s.setDataGetter((e=>{var r=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ht(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&n||(i=n=1,n=this.getter(0).length,i=n,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:i}}else s={isDevice:!1,url:t};var u=Ie.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var r=u.stream_ops[e];c[e]=function(){return Ie.forceLoadFile(u),r.apply(null,arguments)}})),c.read=(e,r,t,n,o)=>{Ie.forceLoadFile(u);var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(F(i>=0),a.slice)for(var s=0;s{var c=r?Fe.resolve(Ae.join2(e,r)):e,d=pe("cp "+c);function p(t){function f(t){u&&u(),s||Ie.createDataFile(e,r,t,n,o,l),a&&a(),he(d)}Browser.handledByPreloadPlugin(t,c,f,(()=>{i&&i(),he(d)}))||f(t)}me(d),"string"==typeof t?function(e,r,t,n){var o=n?"":pe("al "+e);f(e,(function(t){F(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),o&&he(o)}),(function(r){if(!t)throw'Loading data file "'+e+'" failed.';t()})),o&&me(o)}(t,(e=>p(e)),i):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{b("creating db"),o.result.createObjectStore(Ie.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([Ie.DB_STORE_NAME],"readwrite"),a=n.objectStore(Ie.DB_STORE_NAME),i=0,s=0,l=e.length;function u(){0==s?r():t()}e.forEach((e=>{var r=a.put(Ie.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==l&&u()},r.onerror=()=>{s++,i+s==l&&u()}})),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([Ie.DB_STORE_NAME],"readonly")}catch(e){return void t(e)}var i=a.objectStore(Ie.DB_STORE_NAME),s=0,l=0,u=e.length;function c(){0==l?r():t()}e.forEach((e=>{var r=i.get(e);r.onsuccess=()=>{Ie.analyzePath(e).exists&&Ie.unlink(e),Ie.createDataFile(Ae.dirname(e),Ae.basename(e),r.result,!0,!0,!0),++s+l==u&&c()},r.onerror=()=>{l++,s+l==u&&c()}})),a.onerror=t},o.onerror=t},absolutePath:()=>{ge("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{ge("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{ge("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{ge("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{ge("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{ge("FS.standardizePath has been removed; use PATH.normalize instead")}},Le={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Ae.isAbs(r))return r;var n;if(-100===e)n=Ie.cwd();else{var o=Ie.getStream(e);if(!o)throw new Ie.ErrnoError(8);n=o.path}if(0==r.length){if(!t)throw new Ie.ErrnoError(44);return n}return Ae.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Ae.normalize(r)!==Ae.normalize(Ie.getPath(e.node)))return-54;throw e}return $[t>>2]=n.dev,$[t+4>>2]=0,$[t+8>>2]=n.ino,$[t+12>>2]=n.mode,$[t+16>>2]=n.nlink,$[t+20>>2]=n.uid,$[t+24>>2]=n.gid,$[t+28>>2]=n.rdev,$[t+32>>2]=0,Ee=[n.size>>>0,(ye=n.size,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[t+40>>2]=Ee[0],$[t+44>>2]=Ee[1],$[t+48>>2]=4096,$[t+52>>2]=n.blocks,$[t+56>>2]=n.atime.getTime()/1e3|0,$[t+60>>2]=0,$[t+64>>2]=n.mtime.getTime()/1e3|0,$[t+68>>2]=0,$[t+72>>2]=n.ctime.getTime()/1e3|0,$[t+76>>2]=0,Ee=[n.ino>>>0,(ye=n.ino,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[t+80>>2]=Ee[0],$[t+84>>2]=Ee[1],0},doMsync:function(e,r,t,n,o){var a=U.slice(e,e+t);Ie.msync(r,a,o,t,n)},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ie.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=Ie.readlink(e),o=Math.min(t,I(n)),a=x[r+o];return N(n,r,t+1),x[r+o]=a,o},doAccess:function(e,r){if(-8&r)return-28;var t=Ie.lookupPath(e,{follow:!0}).node;if(!t)return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&Ie.nodePermissions(t,n)?-2:0},doReadv:function(e,r,t,n){for(var o=0,a=0;a>2],s=$[r+4>>2];r+=8;var l=Ie.read(e,x,i,s,n);if(l<0)return-1;if(o+=l,l>2],s=$[r+4>>2];r+=8;var l=Ie.write(e,x,i,s,n);if(l<0)return-1;o+=l}return o},varargs:void 0,get:function(){return F(null!=Le.varargs),Le.varargs+=4,$[Le.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=Ie.getStream(e);if(!r)throw new Ie.ErrnoError(8);return r}};function xe(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Ue=void 0;function Be(e){for(var r="",t=e;U[t];)r+=Ue[U[t++]];return r}var je={},$e={},We={},ze=48,He=57;function Ge(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=ze&&r<=He?"_"+e:e}function Ve(e,r){return e=Ge(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function qe(e,r){var t=Ve(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Ye=void 0;function Xe(e){throw new Ye(e)}var Ke=void 0;function Je(e){throw new Ke(e)}function Qe(e,r,t){function n(r){var n=t(r);n.length!==e.length&&Je("Mismatched type converter count");for(var o=0;o{$e.hasOwnProperty(e)?o[r]=$e[e]:(a.push(e),je.hasOwnProperty(e)||(je[e]=[]),je[e].push((()=>{o[r]=$e[e],++i===a.length&&n(o)})))})),0===a.length&&n(o)}function Ze(e,r,t={}){if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||Xe('type "'+n+'" must have a positive integer typeid pointer'),$e.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;Xe("Cannot register type '"+n+"' twice")}if($e[e]=r,delete We[e],je.hasOwnProperty(e)){var o=je[e];delete je[e],o.forEach((e=>e()))}}function er(e){if(!(this instanceof _r))return!1;if(!(e instanceof _r))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o}function rr(e){Xe(e.$$.ptrType.registeredClass.name+" instance already deleted")}var tr=!1;function nr(e){}function or(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function ar(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=ar(e,r,t.baseClass);return null===n?null:t.downcast(n)}var ir={};function sr(){return Object.keys(pr).length}function lr(){var e=[];for(var r in pr)pr.hasOwnProperty(r)&&e.push(pr[r]);return e}var ur=[];function cr(){for(;ur.length;){var e=ur.pop();e.$$.deleteScheduled=!1,e.delete()}}var dr=void 0;function fr(e){dr=e,ur.length&&dr&&dr(cr)}var pr={};function mr(e,r){return r=function(e,r){for(void 0===r&&Xe("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),pr[r]}function hr(e,r){return r.ptrType&&r.ptr||Je("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&Je("Both smartPtrType and smartPtr must be specified"),r.count={value:1},vr(Object.create(e,{$$:{value:r}}))}function gr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=mr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?hr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):hr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a,i=this.registeredClass.getActualType(r),s=ir[i];if(!s)return o.call(this);a=this.isConst?s.constPointerType:s.pointerType;var l=ar(r,this.registeredClass,a.registeredClass);return null===l?o.call(this):this.isSmartPointer?hr(a.registeredClass.instancePrototype,{ptrType:a,ptr:l,smartPtrType:this,smartPtr:e}):hr(a.registeredClass.instancePrototype,{ptrType:a,ptr:l})}function vr(e){return"undefined"==typeof FinalizationRegistry?(vr=e=>e,e):(tr=new FinalizationRegistry((e=>{console.warn(e.leakWarning.stack.replace(/^Error: /,"")),or(e.$$)})),vr=e=>{var r=e.$$;if(!!r.smartPtr){var t={$$:r},n=r.ptrType.registeredClass;t.leakWarning=new Error("Embind found a leaked C++ instance "+n.name+" <0x"+r.ptr.toString(16)+">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated"),"captureStackTrace"in Error&&Error.captureStackTrace(t.leakWarning,gr),tr.register(e,t,e)}return e},nr=e=>tr.unregister(e),vr(e))}function yr(){if(this.$$.ptr||rr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,r=vr(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r}function Er(){this.$$.ptr||rr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),nr(this),or(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function wr(){return!this.$$.ptr}function br(){return this.$$.ptr||rr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),ur.push(this),1===ur.length&&dr&&dr(cr),this.$$.deleteScheduled=!0,this}function _r(){}function Tr(e,r,t){if(void 0===e[r].overloadTable){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||Xe("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function kr(e,r,t,n,o,a,i,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=a,this.upcast=i,this.downcast=s,this.pureVirtualFunctions=[]}function Sr(e,r,t){for(;r!==t;)r.upcast||Xe("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function Cr(e,r){if(null===r)return this.isReference&&Xe("null is not a valid "+this.name),0;r.$$||Xe('Cannot pass "'+Kr(r)+'" as a '+this.name),r.$$.ptr||Xe("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return Sr(r.$$.ptr,t,this.registeredClass)}function Pr(e,r){var t;if(null===r)return this.isReference&&Xe("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,t),t):0;r.$$||Xe('Cannot pass "'+Kr(r)+'" as a '+this.name),r.$$.ptr||Xe("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&Xe("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=Sr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&Xe("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:Xe("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,Xr.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,t)}break;default:Xe("Unsupporting sharing policy")}return t}function Ar(e,r){if(null===r)return this.isReference&&Xe("null is not a valid "+this.name),0;r.$$||Xe('Cannot pass "'+Kr(r)+'" as a '+this.name),r.$$.ptr||Xe("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&Xe("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return Sr(r.$$.ptr,t,this.registeredClass)}function Fr(e){return this.fromWireType(W[e>>2])}function Dr(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Or(e){this.rawDestructor&&this.rawDestructor(e)}function Rr(e){null!==e&&e.delete()}function Mr(e,r,t,n,o,a,i,s,l,u,c){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=i,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=u,this.rawDestructor=c,o||void 0!==r.baseClass?this.toWireType=Pr:n?(this.toWireType=Cr,this.destructorFunction=null):(this.toWireType=Ar,this.destructorFunction=null)}function Nr(e,t,n){return e.includes("j")?function(e,t,n){F("dynCall_"+e in r,"bad function pointer type - no table for sig '"+e+"'"),n&&n.length?F(n.length===e.substring(1).replace(/j/g,"--").length):F(1==e.length);var o=r["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)}(e,t,n):(F(Pe(t),"missing table entry in dynCall: "+t),Pe(t).apply(null,n))}function Ir(e,r){var t=(e=Be(e)).includes("j")?function(e,r){F(e.includes("j"),"getDynCaller should only be called with i64 sigs");var t=[];return function(){return t.length=0,Object.assign(t,arguments),Nr(e,r,t)}}(e,r):Pe(r);return"function"!=typeof t&&Xe("unknown function pointer with signature "+e+": "+r),t}var Lr=void 0;function xr(e){var r=bt(e),t=Be(r);return vt(r),t}function Ur(e,r){var t=[],n={};throw r.forEach((function e(r){n[r]||$e[r]||(We[r]?We[r].forEach(e):(t.push(r),n[r]=!0))})),new Lr(e+": "+t.map(xr).join([", "]))}function Br(e,r){for(var t=[],n=0;n>2)+n]);return t}function jr(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function $r(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=Ve(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function Wr(e,r,t,n,o){var a=r.length;a<2&&Xe("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var i=null!==r[1]&&null!==t,s=!1,l=1;l0?", ":"")+d),f+=(u?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",s)f+="runDestructors(destructors);\n";else for(l=i?1:2;l4&&0==--Gr[e].refcount&&(Gr[e]=void 0,Hr.push(e))}function qr(){for(var e=0,r=5;r(e||Xe("Cannot use deleted val. handle = "+e),Gr[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=Hr.length?Hr.pop():Gr.length;return Gr[r]={refcount:1,value:e},r}}};function Kr(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}function Jr(e,r){switch(r){case 2:return function(e){return this.fromWireType(z[e>>2])};case 3:return function(e){return this.fromWireType(H[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Qr(e,r,t){switch(r){case 0:return t?function(e){return x[e]}:function(e){return U[e]};case 1:return t?function(e){return B[e>>1]}:function(e){return j[e>>1]};case 2:return t?function(e){return $[e>>2]}:function(e){return W[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Zr(e,r){var t=$e[e];return void 0===t&&Xe(r+" has unknown type "+xr(e)),t}var et={};var rt=[];var tt=[];function nt(e,r){return F(r===(0|r)),(e>>>0)+4294967296*r}function ot(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function at(e,r){return e>=0?e:r<=32?2*Math.abs(1<>3]),n+=8):"i64"==e?(r=[$[n>>2],$[n+4>>2]],n+=8):(F(0==(3&n)),e="i32",r=$[n>>2],n+=4),r}for(var a,i,s,l,u,c,d=[];;){var f=t;if(0===(a=x[t>>0]))break;if(i=x[t+1>>0],37==a){var p=!1,m=!1,h=!1,g=!1,v=!1;e:for(;;){switch(i){case 43:p=!0;break;case 45:m=!0;break;case 35:h=!0;break;case 48:if(g)break e;g=!0;break;case 32:v=!0;break;default:break e}t++,i=x[t+1>>0]}var y=0;if(42==i)y=o("i32"),t++,i=x[t+1>>0];else for(;i>=48&&i<=57;)y=10*y+(i-48),t++,i=x[t+1>>0];var E,w=!1,b=-1;if(46==i){if(b=0,w=!0,t++,42==(i=x[t+1>>0]))b=o("i32"),t++;else for(;;){var _=x[t+1>>0];if(_<48||_>57)break;b=10*b+(_-48),t++}i=x[t+1>>0]}switch(b<0&&(b=6,w=!1),String.fromCharCode(i)){case"h":104==x[t+2>>0]?(t++,E=1):E=2;break;case"l":108==x[t+2>>0]?(t++,E=8):E=4;break;case"L":case"q":case"j":E=8;break;case"z":case"t":case"I":E=4;break;default:E=null}switch(E&&t++,i=x[t+1>>0],String.fromCharCode(i)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var T=100==i||105==i;if(s=o("i"+8*(E=E||4)),8==E&&(s=117==i?(u=s[0],c=s[1],(u>>>0)+4294967296*(c>>>0)):nt(s[0],s[1])),E<=4)s=(T?ot:at)(s&Math.pow(256,E)-1,8*E);var k=Math.abs(s),S="";if(100==i||105==i)A=ot(s,8*E).toString(10);else if(117==i)A=at(s,8*E).toString(10),s=Math.abs(s);else if(111==i)A=(h?"0":"")+k.toString(8);else if(120==i||88==i){if(S=h&&0!=s?"0x":"",s<0){s=-s,A=(k-1).toString(16);for(var C=[],P=0;P=0&&(p?S="+"+S:v&&(S=" "+S)),"-"==A.charAt(0)&&(S="-"+S,A=A.substr(1));S.length+A.lengthR&&R>=-4?(i=(103==i?"f":"F").charCodeAt(0),b-=R+1):(i=(103==i?"e":"E").charCodeAt(0),b--),O=Math.min(b,20)}101==i||69==i?(A=s.toExponential(O),/[eE][-+]\d$/.test(A)&&(A=A.slice(0,-1)+"0"+A.slice(-1))):102!=i&&70!=i||(A=s.toFixed(O),0===s&&((l=s)<0||0===l&&1/l==-1/0)&&(A="-"+A));var M=A.split("e");if(D&&!h)for(;M[0].length>1&&M[0].includes(".")&&("0"==M[0].slice(-1)||"."==M[0].slice(-1));)M[0]=M[0].slice(0,-1);else for(h&&-1==A.indexOf(".")&&(M[0]+=".");b>O++;)M[0]+="0";A=M[0]+(M.length>1?"e"+M[1]:""),69==i&&(A=A.toUpperCase()),s>=0&&(p?A="+"+A:v&&(A=" "+A))}else A=(s<0?"-":"")+"inf",g=!1;for(;A.length>0]);else d=d.concat(ht("(null)".substr(0,I),!0));if(m)for(;I0;)d.push(32);m||d.push(o("i8"));break;case"n":var L=o("i32*");$[L>>2]=d.length;break;case"%":d.push(a);break;default:for(P=f;P>0])}t+=2}else d.push(a),t+=1}return d}function st(e){if(!e||!e.callee||!e.callee.name)return[null,"",""];e.callee.toString();var r=e.callee.name,t="(",n=!0;for(var o in e){var a=e[o];n||(t+=", "),n=!1,t+="number"==typeof a||"string"==typeof a?a:"("+typeof a+")"}t+=")";var i=e.callee.caller;return n&&(t=""),[e=i?i.arguments:[],r,t]}function lt(e){var r=function(){var e=new Error;if(!e.stack){try{throw new Error}catch(r){e=r}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}(),t=r.lastIndexOf("_emscripten_log"),n=r.lastIndexOf("_emscripten_get_callstack"),o=r.indexOf("\n",Math.max(t,n))+1;r=r.slice(o),32&e&&T("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(T('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'),e^=8,e|=16);var a=null;if(128&e)for(a=st(arguments);a[1].includes("_emscripten_");)a=st(a[0]);var i=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),l=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),u=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in i){var d=i[c],f="",p="",m=0,h=0,g=u.exec(d);if(g&&5==g.length)f=g[1],p=g[2],m=g[3],h=g[4];else{if((g=s.exec(d))||(g=l.exec(d)),!(g&&g.length>=4)){r+=d+"\n";continue}f=g[1],p=g[2],m=g[3],h=0|g[4]}var v=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:m,column:h});(v=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+f+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!v)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(v?" = "+f:" at "+f)+" ("+p+":"+m+":"+h+")\n"),128&e&&a[0]&&(a[1]==f&&a[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+a[1]+a[2]+"\n"),a=st(a[0]))}return r=r.replace(/\s+$/,"")}function ut(e){try{return w.grow(e-L.byteLength+65535>>>16),Z(w.buffer),1}catch(r){_("emscripten_realloc_buffer: Attempted to grow heap from "+L.byteLength+" bytes to "+e+" bytes, but got error: "+r)}}var ct={};function dt(){if(!dt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:n||"./this.program"};for(var r in ct)void 0===ct[r]?delete e[r]:e[r]=ct[r];var t=[];for(var r in e)t.push(r+"="+e[r]);dt.strings=t}return dt.strings}var ft=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ie.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},pt=365,mt=146;function ht(e,r,t){var n=t>0?t:I(e)+1,o=new Array(n),a=M(e,o,0,o.length);return r&&(o.length=a),o}Object.defineProperties(ft.prototype,{read:{get:function(){return(this.mode&pt)===pt},set:function(e){e?this.mode|=pt:this.mode&=-366}},write:{get:function(){return(this.mode&mt)===mt},set:function(e){e?this.mode|=mt:this.mode&=-147}},isFolder:{get:function(){return Ie.isDir(this.mode)}},isDevice:{get:function(){return Ie.isChrdev(this.mode)}}}),Ie.FSNode=ft,Ie.staticInit(),Ne={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);Ue=e}(),Ye=r.BindingError=qe(Error,"BindingError"),Ke=r.InternalError=qe(Error,"InternalError"),_r.prototype.isAliasOf=er,_r.prototype.clone=yr,_r.prototype.delete=Er,_r.prototype.isDeleted=wr,_r.prototype.deleteLater=br,r.getInheritedInstanceCount=sr,r.getLiveInheritedInstances=lr,r.flushPendingDeletes=cr,r.setDelayFunction=fr,Mr.prototype.getPointee=Dr,Mr.prototype.destructor=Or,Mr.prototype.argPackAdvance=8,Mr.prototype.readValueFromPointer=Fr,Mr.prototype.deleteObject=Rr,Mr.prototype.fromWireType=gr,Lr=r.UnboundTypeError=qe(Error,"UnboundTypeError"),r.count_emval_handles=qr,r.get_first_emval=Yr;var gt={__syscall_fcntl64:function(e,r,t){Le.varargs=t;try{var n=Le.getStreamFromFD(e);switch(r){case 0:return(o=Le.get())<0?-28:Ie.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=Le.get();return n.flags|=o,0;case 5:o=Le.get();return B[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return a=28,$[wt()>>2]=a,-1}}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}var a},__syscall_openat:function(e,r,t,n){Le.varargs=n;try{r=Le.getStr(r),r=Le.calculateAt(e,r);var o=n?Le.get():0;return Ie.open(r,t,o).fd}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}},_embind_register_bigint:function(e,r,t,n,o){},_embind_register_bool:function(e,r,t,n,o){var a=xe(t);Ze(e,{name:r=Be(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=x;else if(2===t)n=B;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=$}return this.fromWireType(n[e>>a])},destructorFunction:null})},_embind_register_class:function(e,t,n,o,a,i,s,l,u,c,d,f,p){d=Be(d),i=Ir(a,i),l&&(l=Ir(s,l)),c&&(c=Ir(u,c)),p=Ir(f,p);var m=Ge(d);!function(e,t,n){r.hasOwnProperty(e)?((void 0===n||void 0!==r[e].overloadTable&&void 0!==r[e].overloadTable[n])&&Xe("Cannot register public name '"+e+"' twice"),Tr(r,e,e),r.hasOwnProperty(n)&&Xe("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),r[e].overloadTable[n]=t):(r[e]=t,void 0!==n&&(r[e].numArguments=n))}(m,(function(){Ur("Cannot construct "+d+" due to unbound types",[o])})),Qe([e,t,n],o?[o]:[],(function(t){var n,a;t=t[0],a=o?(n=t.registeredClass).instancePrototype:_r.prototype;var s=Ve(m,(function(){if(Object.getPrototypeOf(this)!==u)throw new Ye("Use 'new' to construct "+d);if(void 0===f.constructor_body)throw new Ye(d+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ye("Tried to invoke ctor of "+d+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),u=Object.create(a,{constructor:{value:s}});s.prototype=u;var f=new kr(d,s,u,p,n,i,l,c),h=new Mr(d,f,!0,!1,!1),g=new Mr(d+"*",f,!1,!1,!1),v=new Mr(d+" const*",f,!1,!0,!1);return ir[e]={pointerType:g,constPointerType:v},function(e,t,n){r.hasOwnProperty(e)||Je("Replacing nonexistant public symbol"),void 0!==r[e].overloadTable&&void 0!==n?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)}(m,s),[h,g,v]}))},_embind_register_class_constructor:function(e,r,t,n,o,a){F(r>0);var i=Br(r,t);o=Ir(n,o),Qe([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Ye("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=()=>{Ur("Cannot construct "+e.name+" due to unbound types",i)},Qe([],i,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=Wr(t,n,null,o,a),[]})),[]}))},_embind_register_class_function:function(e,r,t,n,o,a,i,s){var l=Br(t,n);r=Be(r),a=Ir(o,a),Qe([],[e],(function(e){var n=(e=e[0]).name+"."+r;function o(){Ur("Cannot call "+n+" due to unbound types",l)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var u=e.registeredClass.instancePrototype,c=u[r];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===t-2?(o.argCount=t-2,o.className=e.name,u[r]=o):(Tr(u,r,n),u[r].overloadTable[t-2]=o),Qe([],l,(function(o){var s=Wr(n,o,e,a,i);return void 0===u[r].overloadTable?(s.argCount=t-2,u[r]=s):u[r].overloadTable[t-2]=s,[]})),[]}))},_embind_register_class_property:function(e,r,t,n,o,a,i,s,l,u){r=Be(r),o=Ir(n,o),Qe([],[e],(function(e){var n=(e=e[0]).name+"."+r,c={get:function(){Ur("Cannot access "+n+" due to unbound types",[t,i])},enumerable:!0,configurable:!0};return c.set=l?()=>{Ur("Cannot access "+n+" due to unbound types",[t,i])}:e=>{Xe(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,c),Qe([],l?[t,i]:[t],(function(t){var i=t[0],c={get:function(){var r=zr(this,e,n+" getter");return i.fromWireType(o(a,r))},enumerable:!0};if(l){l=Ir(s,l);var d=t[1];c.set=function(r){var t=zr(this,e,n+" setter"),o=[];l(u,t,d.toWireType(o,r)),jr(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,c),[]})),[]}))},_embind_register_emval:function(e,r){Ze(e,{name:r=Be(r),fromWireType:function(e){var r=Xr.toValue(e);return Vr(e),r},toWireType:function(e,r){return Xr.toHandle(r)},argPackAdvance:8,readValueFromPointer:Fr,destructorFunction:null})},_embind_register_float:function(e,r,t){var n=xe(t);Ze(e,{name:r=Be(r),fromWireType:function(e){return e},toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Kr(r)+'" to '+this.name);return r},argPackAdvance:8,readValueFromPointer:Jr(r,n),destructorFunction:null})},_embind_register_integer:function(e,r,t,n,o){r=Be(r),-1===o&&(o=4294967295);var a=xe(t),i=e=>e;if(0===n){var s=32-8*t;i=e=>e<>>s}var l=r.includes("unsigned"),u=(e,t)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError('Cannot convert "'+Kr(e)+'" to '+t);if(eo)throw new TypeError('Passing a number "'+Kr(e)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!")};Ze(e,{name:r,fromWireType:i,toWireType:l?function(e,r){return u(r,this.name),r>>>0}:function(e,r){return u(r,this.name),r},argPackAdvance:8,readValueFromPointer:Qr(r,a,0!==n),destructorFunction:null})},_embind_register_memory_view:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=W,t=r[e>>=2],o=r[e+1];return new n(L,o,t)}Ze(e,{name:t=Be(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},_embind_register_std_string:function(e,r){var t="std::string"===(r=Be(r));Ze(e,{name:r,fromWireType:function(e){var r,n=W[e>>2];if(t)for(var o=e+4,a=0;a<=n;++a){var i=e+4+a;if(a==n||0==U[i]){var s=R(o,i-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=i+1}}else{var l=new Array(n);for(a=0;aI(r):()=>r.length)(),a=yt(4+o+1);if(W[a>>2]=o,t&&n)N(r,a+4,o+1);else if(n)for(var i=0;i255&&(vt(a),Xe("String has UTF-16 code units that do not fit in 8 bits")),U[a+4+i]=s}else for(i=0;ij,s=1):4===r&&(n=X,o=K,i=J,a=()=>W,s=2),Ze(e,{name:t,fromWireType:function(e){for(var t,o=W[e>>2],i=a(),l=e+4,u=0;u<=o;++u){var c=e+4+u*r;if(u==o||0==i[c>>s]){var d=n(l,c-l);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),l=c+r}}return vt(e),t},toWireType:function(e,n){"string"!=typeof n&&Xe("Cannot pass non-string to C++ string type "+t);var a=i(n),l=yt(4+a+r);return W[l>>2]=a>>s,o(n,l+4,a+r),null!==e&&e.push(vt,l),l},argPackAdvance:8,readValueFromPointer:Fr,destructorFunction:function(e){vt(e)}})},_embind_register_void:function(e,r){Ze(e,{isVoid:!0,name:r=Be(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},_emscripten_date_now:function(){return Date.now()},_emval_as:function(e,r,t){e=Xr.toValue(e),r=Zr(r,"emval::as");var n=[],o=Xr.toHandle(n);return $[t>>2]=o,r.toWireType(n,e)},_emval_call_void_method:function(e,r,t,n){var o,a;(e=rt[e])(r=Xr.toValue(r),t=void 0===(a=et[o=t])?Be(o):a,null,n)},_emval_decref:Vr,_emval_get_method_caller:function(e,r){var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",a=tt[o];if(void 0!==a)return a;for(var i=["retType"],s=[n],l="",u=0;u4&&(Gr[e].refcount+=1)},_emval_run_destructors:function(e){jr(Xr.toValue(e)),Vr(e)},_emval_take_value:function(e,r){var t=(e=Zr(e,"_emval_take_value")).readValueFromPointer(r);return Xr.toHandle(t)},_gmtime_js:function(e,r){var t=new Date(1e3*$[e>>2]);$[r>>2]=t.getUTCSeconds(),$[r+4>>2]=t.getUTCMinutes(),$[r+8>>2]=t.getUTCHours(),$[r+12>>2]=t.getUTCDate(),$[r+16>>2]=t.getUTCMonth(),$[r+20>>2]=t.getUTCFullYear()-1900,$[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;$[r+28>>2]=o},_localtime_js:function(e,r){var t=new Date(1e3*$[e>>2]);$[r>>2]=t.getSeconds(),$[r+4>>2]=t.getMinutes(),$[r+8>>2]=t.getHours(),$[r+12>>2]=t.getDate(),$[r+16>>2]=t.getMonth(),$[r+20>>2]=t.getFullYear()-1900,$[r+24>>2]=t.getDay();var n=new Date(t.getFullYear(),0,1),o=(t.getTime()-n.getTime())/864e5|0;$[r+28>>2]=o,$[r+36>>2]=-60*t.getTimezoneOffset();var a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=n.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));$[r+32>>2]=s},_mktime_js:function(e){var r=new Date($[e+20>>2]+1900,$[e+16>>2],$[e+12>>2],$[e+8>>2],$[e+4>>2],$[e>>2],0),t=$[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)$[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var l=Math.max(i,a),u=t>0?s:l;r.setTime(r.getTime()+6e4*(u-n))}$[e+24>>2]=r.getDay();var c=(r.getTime()-o.getTime())/864e5|0;return $[e+28>>2]=c,$[e>>2]=r.getSeconds(),$[e+4>>2]=r.getMinutes(),$[e+8>>2]=r.getHours(),$[e+12>>2]=r.getDate(),$[e+16>>2]=r.getMonth(),r.getTime()/1e3|0},_tzset_js:function e(r,t,n){e.called||(e.called=!0,function(e,r,t){var n=(new Date).getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset(),l=Math.max(i,s);function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}$[e>>2]=60*l,$[r>>2]=Number(i!=s);var c=u(o),d=u(a),f=Q(c),p=Q(d);s>2]=f,$[t+4>>2]=p):($[t>>2]=p,$[t+4>>2]=f)}(r,t,n))},abort:function(){ge("native code called abort()")},emscripten_log:function(e,r,t){!function(e,r){24&e&&(r=r.replace(/\s+$/,""),r+=(r.length>0?"\n":"")+lt(e)),1&e?4&e?console.error(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):console.log(r):6&e?_(r):b(r)}(e,O(it(r,t),0))},emscripten_resize_heap:function(e){var r=U.length;F((e>>>=0)>r);var t,n,o=2147483648;if(e>o)return _("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+o+" bytes!"),!1;for(var a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var s=Math.min(o,(t=Math.max(e,i))+((n=65536)-t%n)%n);if(ut(s))return!0}return _("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return dt().forEach((function(n,o){var a=r+t;$[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(x[r>>0]=0)}(n,a),t+=n.length+1})),0},environ_sizes_get:function(e,r){var t=dt();$[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),$[r>>2]=n,0},fd_close:function(e){try{var r=Le.getStreamFromFD(e);return Ie.close(r),0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=Le.getStreamFromFD(e),n=t.tty?2:Ie.isDir(t.mode)?3:Ie.isLink(t.mode)?7:4;return x[r>>0]=n,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),a=Le.doReadv(o,r,t);return $[n>>2]=a,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_seek:function(e,r,t,n,o){try{var a=Le.getStreamFromFD(e),i=4294967296*t+(r>>>0),s=9007199254740992;return i<=-s||i>=s?-61:(Ie.llseek(a,i,n),Ee=[a.position>>>0,(ye=a.position,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[o>>2]=Ee[0],$[o+4>>2]=Ee[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0)}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),a=Le.doWritev(o,r,t);return $[n>>2]=a,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},setTempRet0:function(e){}};!function(){var e={env:gt,wasi_snapshot_preview1:gt};function t(e,t){var n,o=e.exports;r.asm=o,F(w=r.asm.memory,"memory not found in wasm exports"),Z(w.buffer),F(re=r.asm.__indirect_function_table,"table not found in wasm exports"),n=r.asm.__wasm_call_ctors,ie.unshift(n),he("wasm-instantiate")}me("wasm-instantiate");var n=r;function o(e){F(r===n,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),n=null,t(e.instance)}function a(r){return function(){if(!E&&(s||l)){if("function"==typeof fetch&&!_e(ve))return fetch(ve,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ve+"'";return e.arrayBuffer()})).catch((function(){return ke(ve)}));if(f)return new Promise((function(e,r){f(ve,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return ke(ve)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then((function(e){return e})).then(r,(function(e){_("failed to asynchronously prepare wasm: "+e),_e(ve)&&_("warning: Loading from a file URI ("+ve+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),ge(e)}))}if(r.instantiateWasm)try{return r.instantiateWasm(e,t)}catch(e){return _("Module.instantiateWasm callback failed with error: "+e),!1}E||"function"!=typeof WebAssembly.instantiateStreaming||be(ve)||_e(ve)||"function"!=typeof fetch?a(o):fetch(ve,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(o,(function(e){return _("wasm streaming compile failed: "+e),_("falling back to ArrayBuffer instantiation"),a(o)}))}))}(),r.___wasm_call_ctors=Te("__wasm_call_ctors");var vt=r._free=Te("free"),yt=r._malloc=Te("malloc"),Et=r._strlen=Te("strlen"),wt=r.___errno_location=Te("__errno_location"),bt=r.___getTypeName=Te("__getTypeName");r.___embind_register_native_and_builtin_types=Te("__embind_register_native_and_builtin_types");var _t=r.___stdio_exit=Te("__stdio_exit"),Tt=r._emscripten_builtin_memalign=Te("emscripten_builtin_memalign"),kt=r._emscripten_stack_init=function(){return(kt=r._emscripten_stack_init=r.asm.emscripten_stack_init).apply(null,arguments)};r._emscripten_stack_get_free=function(){return(r._emscripten_stack_get_free=r.asm.emscripten_stack_get_free).apply(null,arguments)},r._emscripten_stack_get_base=function(){return(r._emscripten_stack_get_base=r.asm.emscripten_stack_get_base).apply(null,arguments)};var St,Ct=r._emscripten_stack_get_end=function(){return(Ct=r._emscripten_stack_get_end=r.asm.emscripten_stack_get_end).apply(null,arguments)};function Pt(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function At(e){function t(){St||(St=!0,r.calledRun=!0,A||(oe(),F(!le),le=!0,r.noFSInit||Ie.init.initialized||Ie.init(),Ie.ignorePermissions=!1,Se(ie),r.onRuntimeInitialized&&r.onRuntimeInitialized(),F(!r._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(oe(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),se.unshift(e);var e;Se(se)}()))}ue>0||(kt(),ne(),function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)e=r.preRun.shift(),ae.unshift(e);var e;Se(ae)}(),ue>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),t()}),1)):t(),oe()))}if(r.stackSave=Te("stackSave"),r.stackRestore=Te("stackRestore"),r.stackAlloc=Te("stackAlloc"),r.dynCall_ijiii=Te("dynCall_ijiii"),r.dynCall_viiijj=Te("dynCall_viiijj"),r.dynCall_jij=Te("dynCall_jij"),r.dynCall_jii=Te("dynCall_jii"),r.dynCall_jiji=Te("dynCall_jiji"),r._ff_h264_cabac_tables=112940,P("intArrayFromString",!1),P("intArrayToString",!1),P("ccall",!1),P("cwrap",!1),P("setValue",!1),P("getValue",!1),P("allocate",!1),P("UTF8ArrayToString",!1),P("UTF8ToString",!1),P("stringToUTF8Array",!1),P("stringToUTF8",!1),P("lengthBytesUTF8",!1),P("stackTrace",!1),P("addOnPreRun",!1),P("addOnInit",!1),P("addOnPreMain",!1),P("addOnExit",!1),P("addOnPostRun",!1),P("writeStringToMemory",!1),P("writeArrayToMemory",!1),P("writeAsciiToMemory",!1),P("addRunDependency",!0),P("removeRunDependency",!0),P("FS_createFolder",!1),P("FS_createPath",!0),P("FS_createDataFile",!0),P("FS_createPreloadedFile",!0),P("FS_createLazyFile",!0),P("FS_createLink",!1),P("FS_createDevice",!0),P("FS_unlink",!0),P("getLEB",!1),P("getFunctionTables",!1),P("alignFunctionTables",!1),P("registerFunctions",!1),P("addFunction",!1),P("removeFunction",!1),P("prettyPrint",!1),P("dynCall",!1),P("getCompilerSetting",!1),P("print",!1),P("printErr",!1),P("getTempRet0",!1),P("setTempRet0",!1),P("callMain",!1),P("abort",!1),P("keepRuntimeAlive",!1),P("ptrToString",!1),P("zeroMemory",!1),P("stringToNewUTF8",!1),P("emscripten_realloc_buffer",!1),P("ENV",!1),P("ERRNO_CODES",!1),P("ERRNO_MESSAGES",!1),P("setErrNo",!1),P("inetPton4",!1),P("inetNtop4",!1),P("inetPton6",!1),P("inetNtop6",!1),P("readSockaddr",!1),P("writeSockaddr",!1),P("DNS",!1),P("getHostByName",!1),P("Protocols",!1),P("Sockets",!1),P("getRandomDevice",!1),P("traverseStack",!1),P("UNWIND_CACHE",!1),P("convertPCtoSourceLocation",!1),P("readAsmConstArgsArray",!1),P("readAsmConstArgs",!1),P("mainThreadEM_ASM",!1),P("jstoi_q",!1),P("jstoi_s",!1),P("getExecutableName",!1),P("listenOnce",!1),P("autoResumeAudioContext",!1),P("dynCallLegacy",!1),P("getDynCaller",!1),P("dynCall",!1),P("setWasmTableEntry",!1),P("getWasmTableEntry",!1),P("handleException",!1),P("runtimeKeepalivePush",!1),P("runtimeKeepalivePop",!1),P("callUserCallback",!1),P("maybeExit",!1),P("safeSetTimeout",!1),P("asmjsMangle",!1),P("asyncLoad",!1),P("alignMemory",!1),P("mmapAlloc",!1),P("reallyNegative",!1),P("unSign",!1),P("reSign",!1),P("formatString",!1),P("PATH",!1),P("PATH_FS",!1),P("SYSCALLS",!1),P("getSocketFromFD",!1),P("getSocketAddress",!1),P("JSEvents",!1),P("registerKeyEventCallback",!1),P("specialHTMLTargets",!1),P("maybeCStringToJsString",!1),P("findEventTarget",!1),P("findCanvasEventTarget",!1),P("getBoundingClientRect",!1),P("fillMouseEventData",!1),P("registerMouseEventCallback",!1),P("registerWheelEventCallback",!1),P("registerUiEventCallback",!1),P("registerFocusEventCallback",!1),P("fillDeviceOrientationEventData",!1),P("registerDeviceOrientationEventCallback",!1),P("fillDeviceMotionEventData",!1),P("registerDeviceMotionEventCallback",!1),P("screenOrientation",!1),P("fillOrientationChangeEventData",!1),P("registerOrientationChangeEventCallback",!1),P("fillFullscreenChangeEventData",!1),P("registerFullscreenChangeEventCallback",!1),P("registerRestoreOldStyle",!1),P("hideEverythingExceptGivenElement",!1),P("restoreHiddenElements",!1),P("setLetterbox",!1),P("currentFullscreenStrategy",!1),P("restoreOldWindowedStyle",!1),P("softFullscreenResizeWebGLRenderTarget",!1),P("doRequestFullscreen",!1),P("fillPointerlockChangeEventData",!1),P("registerPointerlockChangeEventCallback",!1),P("registerPointerlockErrorEventCallback",!1),P("requestPointerLock",!1),P("fillVisibilityChangeEventData",!1),P("registerVisibilityChangeEventCallback",!1),P("registerTouchEventCallback",!1),P("fillGamepadEventData",!1),P("registerGamepadEventCallback",!1),P("registerBeforeUnloadEventCallback",!1),P("fillBatteryEventData",!1),P("battery",!1),P("registerBatteryEventCallback",!1),P("setCanvasElementSize",!1),P("getCanvasElementSize",!1),P("demangle",!1),P("demangleAll",!1),P("jsStackTrace",!1),P("stackTrace",!1),P("getEnvStrings",!1),P("checkWasiClock",!1),P("writeI53ToI64",!1),P("writeI53ToI64Clamped",!1),P("writeI53ToI64Signaling",!1),P("writeI53ToU64Clamped",!1),P("writeI53ToU64Signaling",!1),P("readI53FromI64",!1),P("readI53FromU64",!1),P("convertI32PairToI53",!1),P("convertU32PairToI53",!1),P("dlopenMissingError",!1),P("setImmediateWrapped",!1),P("clearImmediateWrapped",!1),P("polyfillSetImmediate",!1),P("uncaughtExceptionCount",!1),P("exceptionLast",!1),P("exceptionCaught",!1),P("ExceptionInfo",!1),P("exception_addRef",!1),P("exception_decRef",!1),P("Browser",!1),P("setMainLoop",!1),P("wget",!1),P("FS",!1),P("MEMFS",!1),P("TTY",!1),P("PIPEFS",!1),P("SOCKFS",!1),P("_setNetworkCallback",!1),P("tempFixedLengthArray",!1),P("miniTempWebGLFloatBuffers",!1),P("heapObjectForWebGLType",!1),P("heapAccessShiftForWebGLHeap",!1),P("GL",!1),P("emscriptenWebGLGet",!1),P("computeUnpackAlignedImageSize",!1),P("emscriptenWebGLGetTexPixelData",!1),P("emscriptenWebGLGetUniform",!1),P("webglGetUniformLocation",!1),P("webglPrepareUniformLocationsBeforeFirstUse",!1),P("webglGetLeftBracePos",!1),P("emscriptenWebGLGetVertexAttrib",!1),P("writeGLArray",!1),P("AL",!1),P("SDL_unicode",!1),P("SDL_ttfContext",!1),P("SDL_audio",!1),P("SDL",!1),P("SDL_gfx",!1),P("GLUT",!1),P("EGL",!1),P("GLFW_Window",!1),P("GLFW",!1),P("GLEW",!1),P("IDBStore",!1),P("runAndAbortIfError",!1),P("InternalError",!1),P("BindingError",!1),P("UnboundTypeError",!1),P("PureVirtualError",!1),P("init_embind",!1),P("throwInternalError",!1),P("throwBindingError",!1),P("throwUnboundTypeError",!1),P("ensureOverloadTable",!1),P("exposePublicSymbol",!1),P("replacePublicSymbol",!1),P("extendError",!1),P("createNamedFunction",!1),P("registeredInstances",!1),P("getBasestPointer",!1),P("registerInheritedInstance",!1),P("unregisterInheritedInstance",!1),P("getInheritedInstance",!1),P("getInheritedInstanceCount",!1),P("getLiveInheritedInstances",!1),P("registeredTypes",!1),P("awaitingDependencies",!1),P("typeDependencies",!1),P("registeredPointers",!1),P("registerType",!1),P("whenDependentTypesAreResolved",!1),P("embind_charCodes",!1),P("embind_init_charCodes",!1),P("readLatin1String",!1),P("getTypeName",!1),P("heap32VectorToArray",!1),P("requireRegisteredType",!1),P("getShiftFromSize",!1),P("integerReadValueFromPointer",!1),P("enumReadValueFromPointer",!1),P("floatReadValueFromPointer",!1),P("simpleReadValueFromPointer",!1),P("runDestructors",!1),P("new_",!1),P("craftInvokerFunction",!1),P("embind__requireFunction",!1),P("tupleRegistrations",!1),P("structRegistrations",!1),P("genericPointerToWireType",!1),P("constNoSmartPtrRawPointerToWireType",!1),P("nonConstNoSmartPtrRawPointerToWireType",!1),P("init_RegisteredPointer",!1),P("RegisteredPointer",!1),P("RegisteredPointer_getPointee",!1),P("RegisteredPointer_destructor",!1),P("RegisteredPointer_deleteObject",!1),P("RegisteredPointer_fromWireType",!1),P("runDestructor",!1),P("releaseClassHandle",!1),P("finalizationRegistry",!1),P("detachFinalizer_deps",!1),P("detachFinalizer",!1),P("attachFinalizer",!1),P("makeClassHandle",!1),P("init_ClassHandle",!1),P("ClassHandle",!1),P("ClassHandle_isAliasOf",!1),P("throwInstanceAlreadyDeleted",!1),P("ClassHandle_clone",!1),P("ClassHandle_delete",!1),P("deletionQueue",!1),P("ClassHandle_isDeleted",!1),P("ClassHandle_deleteLater",!1),P("flushPendingDeletes",!1),P("delayFunction",!1),P("setDelayFunction",!1),P("RegisteredClass",!1),P("shallowCopyInternalPointer",!1),P("downcastPointer",!1),P("upcastPointer",!1),P("validateThis",!1),P("char_0",!1),P("char_9",!1),P("makeLegalFunctionName",!1),P("emval_handle_array",!1),P("emval_free_list",!1),P("emval_symbols",!1),P("init_emval",!1),P("count_emval_handles",!1),P("get_first_emval",!1),P("getStringOrSymbol",!1),P("Emval",!1),P("emval_newers",!1),P("craftEmvalAllocator",!1),P("emval_get_global",!1),P("emval_methodCallers",!1),P("emval_registeredMethods",!1),P("warnOnce",!1),P("stackSave",!1),P("stackRestore",!1),P("stackAlloc",!1),P("AsciiToString",!1),P("stringToAscii",!1),P("UTF16ToString",!1),P("stringToUTF16",!1),P("lengthBytesUTF16",!1),P("UTF32ToString",!1),P("stringToUTF32",!1),P("lengthBytesUTF32",!1),P("allocateUTF8",!1),P("allocateUTF8OnStack",!1),r.writeStackCookie=ne,r.checkStackCookie=oe,C("ALLOC_NORMAL",!1),C("ALLOC_STACK",!1),de=function e(){St||At(),St||(de=e)},r.run=At,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();At(),e.exports=r}));const u=1e3,c=1e3,d=!1,f=!1,p=!1,m=!1,h="initVideo",g="render",v="playAudio",y="initAudio",E="audioCode",w="videoCode",b=1,_=2,T="init",k="decode",S="audioDecode",C="videoDecode",P="close",A="updateConfig",F="key",D="delta";s((function(e){!function(){var r="undefined"!=typeof window&&void 0!==window.document?window.document:{},t=e.exports,n=function(){for(var e,t=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n=0,o=t.length,a={};n{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),l.postRun=function(){var e=[],r=[],t={};"VideoEncoder"in self&&(t={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){t.isEmitInfo||(n.opt.debug&&console.log("Jessibuca: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:h,w:e.codedWidth,h:e.codedHeight}),t.isEmitInfo=!0,t.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),t.offscreenCanvasCtx=t.offscreenCanvas.getContext("2d")),t.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let r=t.offscreenCanvas.transferToImageBitmap();postMessage({cmd:g,buffer:r,delay:n.delay,ts:0},[r]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,r){const o=e[0]>>4==1;if(t.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:r,type:o?F:D});t.decoder.decode(n)}else if(o&&0===e[1]){const r=15&e[0];n.setVideoCodec(r);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));t.decoder.configure(o),t.hasInit=!0}},reset(){t.hasInit=!1,t.isEmitInfo=!1,t.offscreenCanvas=null,t.offscreenCanvasCtx=null}});var n={opt:{debug:d,useOffscreen:p,useWCS:f,videoBuffer:u,openWebglAlignment:m,videoBufferDelay:c},useOffscreen:function(){return n.opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,t){postMessage({cmd:y,sampleRate:t,channels:e});var n=[],o=0;this.playAudioPlanar=function(t,a,i){for(var s=a,u=[],c=0,d=0;d<2;d++){var f=l.HEAPU32[(t>>2)+d]>>2;u[d]=l.HEAPF32.subarray(f,f+s)}if(o){if(!(s>=(a=1024-o)))return o+=s,r[0]=Float32Array.of(...r[0],...u[0]),void(2==e&&(r[1]=Float32Array.of(...r[1],...u[1])));n[0]=Float32Array.of(...r[0],...u[0].subarray(0,a)),2==e&&(n[1]=Float32Array.of(...r[1],...u[1].subarray(0,a))),postMessage({cmd:v,buffer:n,ts:i},n.map((e=>e.buffer))),c=a,s-=a}for(o=s;o>=1024;o-=1024)n[0]=u[0].slice(c,c+=1024),2==e&&(n[1]=u[1].slice(c-1024,c)),postMessage({cmd:v,buffer:n,ts:i},n.map((e=>e.buffer)));o&&(r[0]=u[0].slice(c),2==e&&(r[1]=u[1].slice(c)))}},setVideoCodec:function(e){postMessage({cmd:w,code:e})},setAudioCodec:function(e){postMessage({cmd:E,code:e})},setVideoSize:function(e,r){postMessage({cmd:h,w:e,h:r});var t=e*r,o=t>>2;n.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=((e,r)=>{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),n=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");r&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var a=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(a,n),e.compileShader(a),e.getShaderParameter(a,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(a));var i=e.createProgram();e.attachShader(i,o),e.attachShader(i,a),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(i)),e.useProgram(i);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var l=e.getAttribLocation(i,"vertexPos");e.enableVertexAttribArray(l),e.vertexAttribPointer(l,2,e.FLOAT,!1,0,0);var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(i,"texturePos");function d(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(i,r),t),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var f=d("ySampler",0),p=d("uSampler",1),m=d("vSampler",2);return{render:function(r,t,n,o,a){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,f),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,m),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,a),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(i),e.deleteBuffer(s),e.deleteBuffer(u),e.deleteTexture(f),e.deleteTexture(p),e.deleteTexture(m)}catch(e){}}}})(this.offscreenCanvasGL,n.opt.openWebglAlignment),this.draw=function(n,a,i,s){const u=l.HEAPU8.subarray(a,a+t),c=l.HEAPU8.subarray(i,i+o),d=l.HEAPU8.subarray(s,s+o);this.webglObj.render(e,r,u,c,d);let f=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:g,buffer:f,delay:this.delay,ts:n},[f])}):this.draw=function(e,r,n,a){const i=[Uint8Array.from(l.HEAPU8.subarray(r,r+t)),Uint8Array.from(l.HEAPU8.subarray(n,n+o)),Uint8Array.from(l.HEAPU8.subarray(a,a+o))];postMessage({cmd:g,output:i,delay:this.delay,ts:e},i.map((e=>e.buffer)))}},getDelay:function(e){if(!e)return-1;if(this.firstTimestamp){if(e){const r=Date.now()-this.startTimestamp,t=e-this.firstTimestamp;this.delay=r>=t?r-t:t-r}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay},resetDelay:function(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1},init:function(){n.opt.debug&&console.log("Jessibuca: [worker] init");const r=e=>{n.opt.useWCS&&n.useOffscreen()&&e.type===_&&t.decode?t.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for((t=e.shift()).type===b&&0===t.payload[1]&&r(t);!t.isIFrame&&e.length;)(t=e.shift()).type===b&&0===t.payload[1]&&r(t);t.isIFrame&&(this.dropping=!1,r(t))}else{var t=e[0];if(-1===this.getDelay(t.ts))e.shift(),r(t);else if(this.delay>n.opt.videoBuffer+n.opt.videoBufferDelay)this.resetDelay(),this.dropping=!0;else for(;e.length&&(t=e[0],this.getDelay(t.ts)>n.opt.videoBuffer);)e.shift(),r(t)}}),10)},close:function(){n.opt.debug&&console.log("Jessibuca: [worker]: close"),clearInterval(this.stopId),this.stopId=null,o.clear&&o.clear(),a.clear&&a.clear(),t.reset&&t.reset(),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],r=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===b?e.push({ts:t.ts,payload:r,decoder:o,type:b}):t.type===_&&e.push({ts:t.ts,payload:r,decoder:a,type:_,isIFrame:t.isIFrame})}},o=new l.AudioDecoder(n),a=new l.VideoDecoder(n);postMessage({cmd:T}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case T:try{n.opt=Object.assign(n.opt,JSON.parse(r.opt))}catch(e){}o.sample_rate=r.sampleRate,n.init();break;case k:n.pushBuffer(r.buffer,r.options);break;case S:o.decode(r.buffer,r.ts);break;case C:a.decode(r.buffer,r.ts);break;case P:n.close();break;case A:n.opt[r.key]=r.value}}}})); +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),i=n(r),a=n(t);function s(e,r){return e(r={exports:{}},r.exports),r.exports}var l=s((function(e){var r=void 0!==r?r:{},t=(r={print:function(e){console.log("Jessibuca: [worker]:",e)},printErr:function(e){console.warn("Jessibuca: [worker]:",e),postMessage({cmd:"wasmError",message:e})}},Object.assign({},r)),n="./this.program",s="object"==typeof window,l="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!s&&!u&&!l;if(r.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var d,f,p,m,h,g,v="";if(u){if("object"!=typeof process)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");v=l?o.default.dirname(v)+"/":__dirname+"/",g=()=>{h||(m=i.default,h=o.default)},d=function(e,r){return g(),e=h.normalize(e),m.readFileSync(e,r?void 0:"utf8")},p=e=>{var r=d(e,!0);return r.buffer||(r=new Uint8Array(r)),F(r.buffer),r},f=(e,r,t)=>{g(),e=h.normalize(e),m.readFile(e,(function(e,n){e?t(e):r(n.buffer)}))},process.argv.length>1&&(n=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=r,process.on("uncaughtException",(function(e){if(!(e instanceof St))throw e})),process.on("unhandledRejection",(function(e){throw e})),r.inspect=function(){return"[Emscripten Module object]"}}else if(c){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(d=function(e){return read(e)}),p=function(e){let r;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(r=read(e,"binary"),F("object"==typeof r),r)},f=function(e,r,t){setTimeout((()=>r(p(e))),0)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!s&&!l)throw new Error("environment detection error");if(l?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");d=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},l&&(p=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),f=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var y,E,w,b=r.print||console.log.bind(console),_=r.printErr||console.warn.bind(console);function T(e){T.shown||(T.shown={}),T.shown[e]||(T.shown[e]=1,_(e))}function k(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge("Module."+e+" has been replaced with plain "+t+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function S(e,r){var t="'"+e+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";return r&&(t+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),t}function C(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge(S(e,t))}})}function P(e,t){Object.getOwnPropertyDescriptor(r,e)||(r[e]=()=>ge(S(e,t)))}Object.assign(r,t),t=null,y="fetchSettings",Object.getOwnPropertyDescriptor(r,y)&&ge("`Module."+y+"` was supplied but `"+y+"` not included in INCOMING_MODULE_JS_API"),r.arguments,k("arguments","arguments_"),r.thisProgram&&(n=r.thisProgram),k("thisProgram","thisProgram"),r.quit,k("quit","quit_"),F(void 0===r.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),F(void 0===r.read,"Module.read option was removed (modify read_ in JS)"),F(void 0===r.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),F(void 0===r.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),F(void 0===r.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),F(void 0===r.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),k("read","read_"),k("readAsync","readAsync"),k("readBinary","readBinary"),k("setWindowTitle","setWindowTitle"),F(!c,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."),r.wasmBinary&&(E=r.wasmBinary),k("wasmBinary","wasmBinary"),r.noExitRuntime,k("noExitRuntime","noExitRuntime"),"object"!=typeof WebAssembly&&ge("no native wasm support detected");var A=!1;function F(e,r){e||ge("Assertion failed"+(r?": "+r:""))}var D="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function O(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&D)return D.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&u)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function R(e,r){return e?O(U,e,r):""}function M(e,r,t,n){if(!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;s>1114111&&T("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function N(e,r,t){return F("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),M(e,U,r,t)}function I(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var L,x,U,B,j,$,W,z,H,G="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function V(e,r){F(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&j[n];)++n;if((t=n<<1)-e>32&&G)return G.decode(U.subarray(e,t));for(var i="",a=0;!(a>=r/2);++a){var s=B[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function Y(e,r,t){if(F(r%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),F("number"==typeof t,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,i=0;i>1]=a,r+=2}return B[r>>1]=0,r-n}function q(e){return 2*e.length}function X(e,r){F(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var t=0,n="";!(t>=r/4);){var o=$[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function K(e,r,t){if(F(r%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),F("number"==typeof t,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,i=0;i=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if($[r>>2]=a,(r+=4)+4>o)break}return $[r>>2]=0,r-n}function J(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}function Q(e){var r=I(e)+1,t=gt(r);return t&&M(e,x,t,r),t}function Z(e){L=e,r.HEAP8=x=new Int8Array(e),r.HEAP16=B=new Int16Array(e),r.HEAP32=$=new Int32Array(e),r.HEAPU8=U=new Uint8Array(e),r.HEAPU16=j=new Uint16Array(e),r.HEAPU32=W=new Uint32Array(e),r.HEAPF32=z=new Float32Array(e),r.HEAPF64=H=new Float64Array(e)}var ee=5242880;r.TOTAL_STACK&&F(ee===r.TOTAL_STACK,"the stack size can no longer be determined at runtime");var re,te=r.INITIAL_MEMORY||67108864;function ne(){var e=kt();F(0==(3&e)),$[e>>2]=34821223,$[e+4>>2]=2310721022,$[0]=1668509029}function oe(){if(!A){var e=kt(),r=W[e>>2],t=W[e+4>>2];34821223==r&&2310721022==t||ge("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+t.toString(16)+" 0x"+r.toString(16)),1668509029!==$[0]&&ge("Runtime error: The application has corrupted its heap memory area (address zero)!")}}k("INITIAL_MEMORY","INITIAL_MEMORY"),F(te>=ee,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+te+"! (TOTAL_STACK="+"5242880)"),F("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),F(!r.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),F(67108864==te,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var ie=[],ae=[],se=[],le=!1;F(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var ue=0,ce=null,de=null,fe={};function pe(e){for(var r=e;;){if(!fe[e])return e;e=r+Math.random()}}function me(e){ue++,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(F(!fe[e]),fe[e]=1,null===ce&&"undefined"!=typeof setInterval&&(ce=setInterval((function(){if(A)return clearInterval(ce),void(ce=null);var e=!1;for(var r in fe)e||(e=!0,_("still waiting on run dependencies:")),_("dependency: "+r);e&&_("(end of list)")}),1e4))):_("warning: run dependency added without ID")}function he(e){if(ue--,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(F(fe[e]),delete fe[e]):_("warning: run dependency removed without ID"),0==ue&&(null!==ce&&(clearInterval(ce),ce=null),de)){var t=de;de=null,t()}}function ge(e){throw r.onAbort&&r.onAbort(e),_(e="Aborted("+e+")"),A=!0,new WebAssembly.RuntimeError(e)}var ve,ye,Ee;function we(e){return e.startsWith("data:application/octet-stream;base64,")}function be(e){return e.startsWith("file://")}function _e(e,t){return function(){var n=e,o=t;return t||(o=r.asm),F(le,"native function `"+n+"` called before runtime initialization"),o[e]||F(o[e],"exported native function `"+n+"` not found"),o[e].apply(null,arguments)}}function Te(e){try{if(e==ve&&E)return new Uint8Array(E);if(p)return p(e);throw"both async and sync fetching of the wasm failed"}catch(e){ge(e)}}function ke(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Ce(n)():Ce(n)(t.arg):n(void 0===t.arg?null:t.arg)}else t(r)}}function Se(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var r,t=(r=e,T("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),r);return e===t?e:t+" ["+e+"]"}))}function Ce(e){return re.get(e)}function Pe(){var e=new Error;if(!e.stack){try{throw new Error}catch(r){e=r}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}we(ve="decoder.wasm")||(ve=function(e){return r.locateFile?r.locateFile(e,v):v+e}(ve));var Ae={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Ae.isAbs(e),t="/"===e.substr(-1);return(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Ae.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Ae.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ae.normalize(e.join("/"))},join2:(e,r)=>Ae.normalize(e+"/"+r)};var Fe={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:Ie.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Ae.isAbs(n)}return(r?"/":"")+(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=Fe.resolve(e).substr(1),r=Fe.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=pt(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(b(O(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(b(O(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(_(O(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(_(O(e.output,0)),e.output=[])}}};function Oe(e){e=function(e,r){return F(r,"alignment argument is required"),Math.ceil(e/r)*r}(e,65536);var r=bt(65536,e);return r?(function(e,r){U.fill(0,e,e+r)}(r,e),r):0}var Re={ops_table:null,mount:function(e){return Re.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(Ie.isBlkdev(t)||Ie.isFIFO(t))throw new Ie.ErrnoError(63);Re.ops_table||(Re.ops_table={dir:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,lookup:Re.node_ops.lookup,mknod:Re.node_ops.mknod,rename:Re.node_ops.rename,unlink:Re.node_ops.unlink,rmdir:Re.node_ops.rmdir,readdir:Re.node_ops.readdir,symlink:Re.node_ops.symlink},stream:{llseek:Re.stream_ops.llseek}},file:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:{llseek:Re.stream_ops.llseek,read:Re.stream_ops.read,write:Re.stream_ops.write,allocate:Re.stream_ops.allocate,mmap:Re.stream_ops.mmap,msync:Re.stream_ops.msync}},link:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,readlink:Re.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:Ie.chrdev_stream_ops}});var o=Ie.createNode(e,r,t,n);return Ie.isDir(o.mode)?(o.node_ops=Re.ops_table.dir.node,o.stream_ops=Re.ops_table.dir.stream,o.contents={}):Ie.isFile(o.mode)?(o.node_ops=Re.ops_table.file.node,o.stream_ops=Re.ops_table.file.stream,o.usedBytes=0,o.contents=null):Ie.isLink(o.mode)?(o.node_ops=Re.ops_table.link.node,o.stream_ops=Re.ops_table.link.stream):Ie.isChrdev(o.mode)&&(o.node_ops=Re.ops_table.chrdev.node,o.stream_ops=Re.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ie.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ie.isDir(e.mode)?r.size=4096:Ie.isFile(e.mode)?r.size=e.usedBytes:Ie.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&Re.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ie.genericErrors[44]},mknod:function(e,r,t,n){return Re.createNode(e,r,t,n)},rename:function(e,r,t){if(Ie.isDir(e.mode)){var n;try{n=Ie.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ie.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ie.lookupNode(e,r);for(var n in t.contents)throw new Ie.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=Re.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ie.isLink(e.mode))throw new Ie.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(F(a>=0),a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||n+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=Fe.resolve(Ie.cwd(),e)))return{path:"",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new Ie.ErrnoError(32);for(var n=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!1),o=Ie.root,i="/",a=0;a40)throw new Ie.ErrnoError(32)}}return{path:i,node:o}},getPath:e=>{for(var r;;){if(Ie.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%Ie.nameTable.length},hashAddNode:e=>{var r=Ie.hashName(e.parent.id,e.name);e.name_next=Ie.nameTable[r],Ie.nameTable[r]=e},hashRemoveNode:e=>{var r=Ie.hashName(e.parent.id,e.name);if(Ie.nameTable[r]===e)Ie.nameTable[r]=e.name_next;else for(var t=Ie.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=Ie.mayLookup(e);if(t)throw new Ie.ErrnoError(t,e);for(var n=Ie.hashName(e.id,r),o=Ie.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return Ie.lookup(e,r)},createNode:(e,r,t,n)=>{F("object"==typeof e);var o=new Ie.FSNode(e,r,t,n);return Ie.hashAddNode(o),o},destroyNode:e=>{Ie.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=Ie.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>Ie.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var r=Ie.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{Ie.lookupNode(e,r);return 20}catch(e){}return Ie.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=Ie.lookupNode(e,r)}catch(e){return e.errno}var o=Ie.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ie.isDir(n.mode))return 54;if(Ie.isRoot(n)||Ie.getPath(n)===Ie.cwd())return 10}else if(Ie.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?Ie.isLink(e.mode)?32:Ie.isDir(e.mode)&&("r"!==Ie.flagsToPermissionString(r)||512&r)?31:Ie.nodePermissions(e,Ie.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ie.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!Ie.streams[t])return t;throw new Ie.ErrnoError(33)},getStream:e=>Ie.streams[e],createStream:(e,r,t)=>{Ie.FSStream||(Ie.FSStream=function(){this.shared={}},Ie.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new Ie.FSStream,e);var n=Ie.nextfd(r,t);return e.fd=n,Ie.streams[n]=e,e},closeStream:e=>{Ie.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=Ie.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Ie.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{Ie.devices[e]={stream_ops:r}},getDevice:e=>Ie.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),Ie.syncFSRequests++,Ie.syncFSRequests>1&&_("warning: "+Ie.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ie.getMounts(Ie.root.mount),n=0;function o(e){return F(Ie.syncFSRequests>0),Ie.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((r=>{if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:(e,r,t)=>{if("string"==typeof e)throw e;var n,o="/"===t,i=!t;if(o&&Ie.root)throw new Ie.ErrnoError(10);if(!o&&!i){var a=Ie.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,Ie.isMountpoint(n))throw new Ie.ErrnoError(10);if(!Ie.isDir(n.mode))throw new Ie.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},l=e.mount(s);return l.mount=s,s.root=l,o?Ie.root=l:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),l},unmount:e=>{var r=Ie.lookupPath(e,{follow_mount:!1});if(!Ie.isMountpoint(r.node))throw new Ie.ErrnoError(28);var t=r.node,n=t.mounted,o=Ie.getMounts(n);Object.keys(Ie.nameTable).forEach((e=>{for(var r=Ie.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ie.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);F(-1!==i),t.mount.mounts.splice(i,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=Ie.lookupPath(e,{parent:!0}).node,o=Ae.basename(e);if(!o||"."===o||".."===o)throw new Ie.ErrnoError(28);var i=Ie.mayCreate(n,o);if(i)throw new Ie.ErrnoError(i);if(!n.node_ops.mknod)throw new Ie.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=void 0!==r?r:438,r&=4095,r|=32768,Ie.mknod(e,r,0)),mkdir:(e,r)=>(r=void 0!==r?r:511,r&=1023,r|=16384,Ie.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,Ie.mknod(e,r,t)),symlink:(e,r)=>{if(!Fe.resolve(e))throw new Ie.ErrnoError(44);var t=Ie.lookupPath(r,{parent:!0}).node;if(!t)throw new Ie.ErrnoError(44);var n=Ae.basename(r),o=Ie.mayCreate(t,n);if(o)throw new Ie.ErrnoError(o);if(!t.node_ops.symlink)throw new Ie.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o=Ae.dirname(e),i=Ae.dirname(r),a=Ae.basename(e),s=Ae.basename(r);if(t=Ie.lookupPath(e,{parent:!0}).node,n=Ie.lookupPath(r,{parent:!0}).node,!t||!n)throw new Ie.ErrnoError(44);if(t.mount!==n.mount)throw new Ie.ErrnoError(75);var l,u=Ie.lookupNode(t,a),c=Fe.relative(e,i);if("."!==c.charAt(0))throw new Ie.ErrnoError(28);if("."!==(c=Fe.relative(r,o)).charAt(0))throw new Ie.ErrnoError(55);try{l=Ie.lookupNode(n,s)}catch(e){}if(u!==l){var d=Ie.isDir(u.mode),f=Ie.mayDelete(t,a,d);if(f)throw new Ie.ErrnoError(f);if(f=l?Ie.mayDelete(n,s,d):Ie.mayCreate(n,s))throw new Ie.ErrnoError(f);if(!t.node_ops.rename)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(u)||l&&Ie.isMountpoint(l))throw new Ie.ErrnoError(10);if(n!==t&&(f=Ie.nodePermissions(t,"w")))throw new Ie.ErrnoError(f);Ie.hashRemoveNode(u);try{t.node_ops.rename(u,n,s)}catch(e){throw e}finally{Ie.hashAddNode(u)}}},rmdir:e=>{var r=Ie.lookupPath(e,{parent:!0}).node,t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!0);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.rmdir)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.rmdir(r,t),Ie.destroyNode(n)},readdir:e=>{var r=Ie.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new Ie.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=Ie.lookupPath(e,{parent:!0}).node;if(!r)throw new Ie.ErrnoError(44);var t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!1);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.unlink)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.unlink(r,t),Ie.destroyNode(n)},readlink:e=>{var r=Ie.lookupPath(e).node;if(!r)throw new Ie.ErrnoError(44);if(!r.node_ops.readlink)throw new Ie.ErrnoError(28);return Fe.resolve(Ie.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=Ie.lookupPath(e,{follow:!r}).node;if(!t)throw new Ie.ErrnoError(44);if(!t.node_ops.getattr)throw new Ie.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>Ie.stat(e,!0),chmod:(e,r,t)=>{var n;"string"==typeof e?n=Ie.lookupPath(e,{follow:!t}).node:n=e;if(!n.node_ops.setattr)throw new Ie.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{Ie.chmod(e,r,!0)},fchmod:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);Ie.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;"string"==typeof e?o=Ie.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new Ie.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{Ie.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=Ie.getStream(e);if(!n)throw new Ie.ErrnoError(8);Ie.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new Ie.ErrnoError(28);var t;"string"==typeof e?t=Ie.lookupPath(e,{follow:!0}).node:t=e;if(!t.node_ops.setattr)throw new Ie.ErrnoError(63);if(Ie.isDir(t.mode))throw new Ie.ErrnoError(31);if(!Ie.isFile(t.mode))throw new Ie.ErrnoError(28);var n=Ie.nodePermissions(t,"w");if(n)throw new Ie.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);if(0==(2097155&t.flags))throw new Ie.ErrnoError(28);Ie.truncate(t.node,r)},utime:(e,r,t)=>{var n=Ie.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n,o,i)=>{if(""===e)throw new Ie.ErrnoError(44);var a;if(n=void 0===n?438:n,n=64&(t="string"==typeof t?Ie.modeStringToFlags(t):t)?4095&n|32768:0,"object"==typeof e)a=e;else{e=Ae.normalize(e);try{a=Ie.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(a){if(128&t)throw new Ie.ErrnoError(20)}else a=Ie.mknod(e,n,0),s=!0;if(!a)throw new Ie.ErrnoError(44);if(Ie.isChrdev(a.mode)&&(t&=-513),65536&t&&!Ie.isDir(a.mode))throw new Ie.ErrnoError(54);if(!s){var l=Ie.mayOpen(a,t);if(l)throw new Ie.ErrnoError(l)}512&t&&Ie.truncate(a,0),t&=-131713;var u=Ie.createStream({node:a,path:Ie.getPath(a),flags:t,seekable:!0,position:0,stream_ops:a.stream_ops,ungotten:[],error:!1},o,i);return u.stream_ops.open&&u.stream_ops.open(u),!r.logReadFiles||1&t||(Ie.readFiles||(Ie.readFiles={}),e in Ie.readFiles||(Ie.readFiles[e]=1)),u},close:e=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Ie.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Ie.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new Ie.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(1==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.read)throw new Ie.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write:(e,r,t,n,o,i)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.write)throw new Ie.ErrnoError(28);e.seekable&&1024&e.flags&&Ie.llseek(e,0,2);var a=void 0!==o;if(a){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,i);return a||(e.position+=s),s},allocate:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(r<0||t<=0)throw new Ie.ErrnoError(28);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(!Ie.isFile(e.node.mode)&&!Ie.isDir(e.node.mode))throw new Ie.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ie.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o,i)=>{if(0!=(2&o)&&0==(2&i)&&2!=(2097155&e.flags))throw new Ie.ErrnoError(2);if(1==(2097155&e.flags))throw new Ie.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ie.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o,i)},msync:(e,r,t,n,o)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new Ie.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ie.open(e,r.flags),o=Ie.stat(e),i=o.size,a=new Uint8Array(i);return Ie.read(n,a,0,i,0),"utf8"===r.encoding?t=O(a,0):"binary"===r.encoding&&(t=a),Ie.close(n),t},writeFile:function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t.flags=t.flags||577;var n=Ie.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(I(r)+1),i=M(r,o,0,o.length);Ie.write(n,o,0,i,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ie.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ie.close(n)},cwd:()=>Ie.currentPath,chdir:e=>{var r=Ie.lookupPath(e,{follow:!0});if(null===r.node)throw new Ie.ErrnoError(44);if(!Ie.isDir(r.node.mode))throw new Ie.ErrnoError(54);var t=Ie.nodePermissions(r.node,"x");if(t)throw new Ie.ErrnoError(t);Ie.currentPath=r.path},createDefaultDirectories:()=>{Ie.mkdir("/tmp"),Ie.mkdir("/home"),Ie.mkdir("/home/web_user")},createDefaultDevices:()=>{Ie.mkdir("/dev"),Ie.registerDevice(Ie.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),Ie.mkdev("/dev/null",Ie.makedev(1,3)),De.register(Ie.makedev(5,0),De.default_tty_ops),De.register(Ie.makedev(6,0),De.default_tty1_ops),Ie.mkdev("/dev/tty",Ie.makedev(5,0)),Ie.mkdev("/dev/tty1",Ie.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(u)try{var r=a.default;return function(){return r.randomBytes(1)[0]}}catch(e){}return function(){ge("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();Ie.createDevice("/dev","random",e),Ie.createDevice("/dev","urandom",e),Ie.mkdir("/dev/shm"),Ie.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Ie.mkdir("/proc");var e=Ie.mkdir("/proc/self");Ie.mkdir("/proc/self/fd"),Ie.mount({mount:()=>{var r=Ie.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=+r,n=Ie.getStream(t);if(!n)throw new Ie.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?Ie.createDevice("/dev","stdin",r.stdin):Ie.symlink("/dev/tty","/dev/stdin"),r.stdout?Ie.createDevice("/dev","stdout",null,r.stdout):Ie.symlink("/dev/tty","/dev/stdout"),r.stderr?Ie.createDevice("/dev","stderr",null,r.stderr):Ie.symlink("/dev/tty1","/dev/stderr");var e=Ie.open("/dev/stdin",0),t=Ie.open("/dev/stdout",1),n=Ie.open("/dev/stderr",1);F(0===e.fd,"invalid handle for stdin ("+e.fd+")"),F(1===t.fd,"invalid handle for stdout ("+t.fd+")"),F(2===n.fd,"invalid handle for stderr ("+n.fd+")")},ensureErrnoError:()=>{Ie.ErrnoError||(Ie.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){for(var r in this.errno=e,Ne)if(Ne[r]===e){this.code=r;break}},this.setErrno(e),this.message=Me[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=Se(this.stack))},Ie.ErrnoError.prototype=new Error,Ie.ErrnoError.prototype.constructor=Ie.ErrnoError,[44].forEach((e=>{Ie.genericErrors[e]=new Ie.ErrnoError(e),Ie.genericErrors[e].stack=""})))},staticInit:()=>{Ie.ensureErrnoError(),Ie.nameTable=new Array(4096),Ie.mount(Re,{},"/"),Ie.createDefaultDirectories(),Ie.createDefaultDevices(),Ie.createSpecialDirectories(),Ie.filesystems={MEMFS:Re}},init:(e,t,n)=>{F(!Ie.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ie.init.initialized=!0,Ie.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,Ie.createStandardStreams()},quit:()=>{Ie.init.initialized=!1,wt();for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=Ie.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{e=(n=Ie.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Ie.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=Ae.basename(e),n=Ie.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:Ie.getPath(e);for(var o=r.split("/").reverse();o.length;){var i=o.pop();if(i){var a=Ae.join2(e,i);try{Ie.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,r,t,n,o)=>{var i=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),a=Ie.getMode(n,o);return Ie.create(i,a)},createDataFile:(e,r,t,n,o,i)=>{var a=r;e&&(e="string"==typeof e?e:Ie.getPath(e),a=r?Ae.join2(e,r):e);var s=Ie.getMode(n,o),l=Ie.create(a,s);if(t){if("string"==typeof t){for(var u=new Array(t.length),c=0,d=t.length;c{var o=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),i=Ie.getMode(!!t,!!n);Ie.createDevice.major||(Ie.createDevice.major=64);var a=Ie.makedev(Ie.createDevice.major++,0);return Ie.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,i)=>{for(var a=0,s=0;s{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!d)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=pt(d(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Ie.ErrnoError(29)}},createLazyFile:(e,r,t,n,o)=>{function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((e=>{var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):pt(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:t};var u=Ie.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var r=u.stream_ops[e];c[e]=function(){return Ie.forceLoadFile(u),r.apply(null,arguments)}})),c.read=(e,r,t,n,o)=>{Ie.forceLoadFile(u);var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(F(a>=0),i.slice)for(var s=0;s{var c=r?Fe.resolve(Ae.join2(e,r)):e,d=pe("cp "+c);function p(t){function f(t){u&&u(),s||Ie.createDataFile(e,r,t,n,o,l),i&&i(),he(d)}Browser.handledByPreloadPlugin(t,c,f,(()=>{a&&a(),he(d)}))||f(t)}me(d),"string"==typeof t?function(e,r,t,n){var o=n?"":pe("al "+e);f(e,(function(t){F(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),o&&he(o)}),(function(r){if(!t)throw'Loading data file "'+e+'" failed.';t()})),o&&me(o)}(t,(e=>p(e)),a):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{b("creating db"),o.result.createObjectStore(Ie.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([Ie.DB_STORE_NAME],"readwrite"),i=n.objectStore(Ie.DB_STORE_NAME),a=0,s=0,l=e.length;function u(){0==s?r():t()}e.forEach((e=>{var r=i.put(Ie.analyzePath(e).object.contents,e);r.onsuccess=()=>{++a+s==l&&u()},r.onerror=()=>{s++,a+s==l&&u()}})),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var i=n.transaction([Ie.DB_STORE_NAME],"readonly")}catch(e){return void t(e)}var a=i.objectStore(Ie.DB_STORE_NAME),s=0,l=0,u=e.length;function c(){0==l?r():t()}e.forEach((e=>{var r=a.get(e);r.onsuccess=()=>{Ie.analyzePath(e).exists&&Ie.unlink(e),Ie.createDataFile(Ae.dirname(e),Ae.basename(e),r.result,!0,!0,!0),++s+l==u&&c()},r.onerror=()=>{l++,s+l==u&&c()}})),i.onerror=t},o.onerror=t},absolutePath:()=>{ge("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{ge("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{ge("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{ge("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{ge("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{ge("FS.standardizePath has been removed; use PATH.normalize instead")}},Le={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Ae.isAbs(r))return r;var n;if(-100===e)n=Ie.cwd();else{var o=Ie.getStream(e);if(!o)throw new Ie.ErrnoError(8);n=o.path}if(0==r.length){if(!t)throw new Ie.ErrnoError(44);return n}return Ae.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Ae.normalize(r)!==Ae.normalize(Ie.getPath(e.node)))return-54;throw e}return $[t>>2]=n.dev,$[t+4>>2]=0,$[t+8>>2]=n.ino,$[t+12>>2]=n.mode,$[t+16>>2]=n.nlink,$[t+20>>2]=n.uid,$[t+24>>2]=n.gid,$[t+28>>2]=n.rdev,$[t+32>>2]=0,Ee=[n.size>>>0,(ye=n.size,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[t+40>>2]=Ee[0],$[t+44>>2]=Ee[1],$[t+48>>2]=4096,$[t+52>>2]=n.blocks,$[t+56>>2]=n.atime.getTime()/1e3|0,$[t+60>>2]=0,$[t+64>>2]=n.mtime.getTime()/1e3|0,$[t+68>>2]=0,$[t+72>>2]=n.ctime.getTime()/1e3|0,$[t+76>>2]=0,Ee=[n.ino>>>0,(ye=n.ino,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[t+80>>2]=Ee[0],$[t+84>>2]=Ee[1],0},doMsync:function(e,r,t,n,o){var i=U.slice(e,e+t);Ie.msync(r,i,o,t,n)},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ie.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=Ie.readlink(e),o=Math.min(t,I(n)),i=x[r+o];return N(n,r,t+1),x[r+o]=i,o},doAccess:function(e,r){if(-8&r)return-28;var t=Ie.lookupPath(e,{follow:!0}).node;if(!t)return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&Ie.nodePermissions(t,n)?-2:0},doReadv:function(e,r,t,n){for(var o=0,i=0;i>2],s=$[r+4>>2];r+=8;var l=Ie.read(e,x,a,s,n);if(l<0)return-1;if(o+=l,l>2],s=$[r+4>>2];r+=8;var l=Ie.write(e,x,a,s,n);if(l<0)return-1;o+=l}return o},varargs:void 0,get:function(){return F(null!=Le.varargs),Le.varargs+=4,$[Le.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=Ie.getStream(e);if(!r)throw new Ie.ErrnoError(8);return r}};function xe(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Ue=void 0;function Be(e){for(var r="",t=e;U[t];)r+=Ue[U[t++]];return r}var je={},$e={},We={};function ze(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=48&&r<=57?"_"+e:e}function He(e,r){return e=ze(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function Ge(e,r){var t=He(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Ve=void 0;function Ye(e){throw new Ve(e)}var qe=void 0;function Xe(e){throw new qe(e)}function Ke(e,r,t){function n(r){var n=t(r);n.length!==e.length&&Xe("Mismatched type converter count");for(var o=0;o{$e.hasOwnProperty(e)?o[r]=$e[e]:(i.push(e),je.hasOwnProperty(e)||(je[e]=[]),je[e].push((()=>{o[r]=$e[e],++a===i.length&&n(o)})))})),0===i.length&&n(o)}function Je(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||Ye('type "'+n+'" must have a positive integer typeid pointer'),$e.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;Ye("Cannot register type '"+n+"' twice")}if($e[e]=r,delete We[e],je.hasOwnProperty(e)){var o=je[e];delete je[e],o.forEach((e=>e()))}}function Qe(e){if(!(this instanceof wr))return!1;if(!(e instanceof wr))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o}function Ze(e){Ye(e.$$.ptrType.registeredClass.name+" instance already deleted")}var er=!1;function rr(e){}function tr(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function nr(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=nr(e,r,t.baseClass);return null===n?null:t.downcast(n)}var or={};function ir(){return Object.keys(dr).length}function ar(){var e=[];for(var r in dr)dr.hasOwnProperty(r)&&e.push(dr[r]);return e}var sr=[];function lr(){for(;sr.length;){var e=sr.pop();e.$$.deleteScheduled=!1,e.delete()}}var ur=void 0;function cr(e){ur=e,sr.length&&ur&&ur(lr)}var dr={};function fr(e,r){return r=function(e,r){for(void 0===r&&Ye("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),dr[r]}function pr(e,r){return r.ptrType&&r.ptr||Xe("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&Xe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},hr(Object.create(e,{$$:{value:r}}))}function mr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=fr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?pr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):pr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i,a=this.registeredClass.getActualType(r),s=or[a];if(!s)return o.call(this);i=this.isConst?s.constPointerType:s.pointerType;var l=nr(r,this.registeredClass,i.registeredClass);return null===l?o.call(this):this.isSmartPointer?pr(i.registeredClass.instancePrototype,{ptrType:i,ptr:l,smartPtrType:this,smartPtr:e}):pr(i.registeredClass.instancePrototype,{ptrType:i,ptr:l})}function hr(e){return"undefined"==typeof FinalizationRegistry?(hr=e=>e,e):(er=new FinalizationRegistry((e=>{console.warn(e.leakWarning.stack.replace(/^Error: /,"")),tr(e.$$)})),hr=e=>{var r=e.$$;if(!!r.smartPtr){var t={$$:r},n=r.ptrType.registeredClass;t.leakWarning=new Error("Embind found a leaked C++ instance "+n.name+" <0x"+r.ptr.toString(16)+">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated"),"captureStackTrace"in Error&&Error.captureStackTrace(t.leakWarning,mr),er.register(e,t,e)}return e},rr=e=>er.unregister(e),hr(e))}function gr(){if(this.$$.ptr||Ze(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,r=hr(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r}function vr(){this.$$.ptr||Ze(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),rr(this),tr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function yr(){return!this.$$.ptr}function Er(){return this.$$.ptr||Ze(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),sr.push(this),1===sr.length&&ur&&ur(lr),this.$$.deleteScheduled=!0,this}function wr(){}function br(e,r,t){if(void 0===e[r].overloadTable){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||Ye("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function _r(e,r,t,n,o,i,a,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]}function Tr(e,r,t){for(;r!==t;)r.upcast||Ye("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function kr(e,r){if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),0;r.$$||Ye('Cannot pass "'+qr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return Tr(r.$$.ptr,t,this.registeredClass)}function Sr(e,r){var t;if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,t),t):0;r.$$||Ye('Cannot pass "'+qr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=Tr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&Ye("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:Ye("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,Yr.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,t)}break;default:Ye("Unsupporting sharing policy")}return t}function Cr(e,r){if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),0;r.$$||Ye('Cannot pass "'+qr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return Tr(r.$$.ptr,t,this.registeredClass)}function Pr(e){return this.fromWireType(W[e>>2])}function Ar(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Fr(e){this.rawDestructor&&this.rawDestructor(e)}function Dr(e){null!==e&&e.delete()}function Or(e,r,t,n,o,i,a,s,l,u,c){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=u,this.rawDestructor=c,o||void 0!==r.baseClass?this.toWireType=Sr:n?(this.toWireType=kr,this.destructorFunction=null):(this.toWireType=Cr,this.destructorFunction=null)}function Rr(e,t,n){return e.includes("j")?function(e,t,n){F("dynCall_"+e in r,"bad function pointer type - no table for sig '"+e+"'"),n&&n.length?F(n.length===e.substring(1).replace(/j/g,"--").length):F(1==e.length);var o=r["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)}(e,t,n):(F(Ce(t),"missing table entry in dynCall: "+t),Ce(t).apply(null,n))}function Mr(e,r){var t=(e=Be(e)).includes("j")?function(e,r){F(e.includes("j"),"getDynCaller should only be called with i64 sigs");var t=[];return function(){return t.length=0,Object.assign(t,arguments),Rr(e,r,t)}}(e,r):Ce(r);return"function"!=typeof t&&Ye("unknown function pointer with signature "+e+": "+r),t}var Nr=void 0;function Ir(e){var r=Et(e),t=Be(r);return ht(r),t}function Lr(e,r){var t=[],n={};throw r.forEach((function e(r){n[r]||$e[r]||(We[r]?We[r].forEach(e):(t.push(r),n[r]=!0))})),new Nr(e+": "+t.map(Ir).join([", "]))}function xr(e,r){for(var t=[],n=0;n>2)+n]);return t}function Ur(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function Br(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=He(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function jr(e,r,t,n,o){var i=r.length;i<2&&Ye("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==r[1]&&null!==t,s=!1,l=1;l0?", ":"")+d),f+=(u?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",s)f+="runDestructors(destructors);\n";else for(l=a?1:2;l4&&0==--zr[e].refcount&&(zr[e]=void 0,Wr.push(e))}function Gr(){for(var e=0,r=5;r(e||Ye("Cannot use deleted val. handle = "+e),zr[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=Wr.length?Wr.pop():zr.length;return zr[r]={refcount:1,value:e},r}}};function qr(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}function Xr(e,r){switch(r){case 2:return function(e){return this.fromWireType(z[e>>2])};case 3:return function(e){return this.fromWireType(H[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Kr(e,r,t){switch(r){case 0:return t?function(e){return x[e]}:function(e){return U[e]};case 1:return t?function(e){return B[e>>1]}:function(e){return j[e>>1]};case 2:return t?function(e){return $[e>>2]}:function(e){return W[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Jr(e,r){var t=$e[e];return void 0===t&&Ye(r+" has unknown type "+Ir(e)),t}var Qr={};var Zr=[];var et=[];function rt(e,r){return F(r===(0|r)),(e>>>0)+4294967296*r}function tt(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function nt(e,r){return e>=0?e:r<=32?2*Math.abs(1<>3]),n+=8):"i64"==e?(r=[$[n>>2],$[n+4>>2]],n+=8):(F(0==(3&n)),e="i32",r=$[n>>2],n+=4),r}for(var i,a,s,l,u,c,d=[];;){var f=t;if(0===(i=x[t>>0]))break;if(a=x[t+1>>0],37==i){var p=!1,m=!1,h=!1,g=!1,v=!1;e:for(;;){switch(a){case 43:p=!0;break;case 45:m=!0;break;case 35:h=!0;break;case 48:if(g)break e;g=!0;break;case 32:v=!0;break;default:break e}t++,a=x[t+1>>0]}var y=0;if(42==a)y=o("i32"),t++,a=x[t+1>>0];else for(;a>=48&&a<=57;)y=10*y+(a-48),t++,a=x[t+1>>0];var E,w=!1,b=-1;if(46==a){if(b=0,w=!0,t++,42==(a=x[t+1>>0]))b=o("i32"),t++;else for(;;){var _=x[t+1>>0];if(_<48||_>57)break;b=10*b+(_-48),t++}a=x[t+1>>0]}switch(b<0&&(b=6,w=!1),String.fromCharCode(a)){case"h":104==x[t+2>>0]?(t++,E=1):E=2;break;case"l":108==x[t+2>>0]?(t++,E=8):E=4;break;case"L":case"q":case"j":E=8;break;case"z":case"t":case"I":E=4;break;default:E=null}switch(E&&t++,a=x[t+1>>0],String.fromCharCode(a)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var T=100==a||105==a;if(s=o("i"+8*(E=E||4)),8==E&&(s=117==a?(u=s[0],c=s[1],(u>>>0)+4294967296*(c>>>0)):rt(s[0],s[1])),E<=4)s=(T?tt:nt)(s&Math.pow(256,E)-1,8*E);var k=Math.abs(s),S="";if(100==a||105==a)A=tt(s,8*E).toString(10);else if(117==a)A=nt(s,8*E).toString(10),s=Math.abs(s);else if(111==a)A=(h?"0":"")+k.toString(8);else if(120==a||88==a){if(S=h&&0!=s?"0x":"",s<0){s=-s,A=(k-1).toString(16);for(var C=[],P=0;P=0&&(p?S="+"+S:v&&(S=" "+S)),"-"==A.charAt(0)&&(S="-"+S,A=A.substr(1));S.length+A.lengthR&&R>=-4?(a=(103==a?"f":"F").charCodeAt(0),b-=R+1):(a=(103==a?"e":"E").charCodeAt(0),b--),O=Math.min(b,20)}101==a||69==a?(A=s.toExponential(O),/[eE][-+]\d$/.test(A)&&(A=A.slice(0,-1)+"0"+A.slice(-1))):102!=a&&70!=a||(A=s.toFixed(O),0===s&&((l=s)<0||0===l&&1/l==-1/0)&&(A="-"+A));var M=A.split("e");if(D&&!h)for(;M[0].length>1&&M[0].includes(".")&&("0"==M[0].slice(-1)||"."==M[0].slice(-1));)M[0]=M[0].slice(0,-1);else for(h&&-1==A.indexOf(".")&&(M[0]+=".");b>O++;)M[0]+="0";A=M[0]+(M.length>1?"e"+M[1]:""),69==a&&(A=A.toUpperCase()),s>=0&&(p?A="+"+A:v&&(A=" "+A))}else A=(s<0?"-":"")+"inf",g=!1;for(;A.length>0]);else d=d.concat(pt("(null)".substr(0,I),!0));if(m)for(;I0;)d.push(32);m||d.push(o("i8"));break;case"n":var L=o("i32*");$[L>>2]=d.length;break;case"%":d.push(i);break;default:for(P=f;P>0])}t+=2}else d.push(i),t+=1}return d}function it(e){if(!e||!e.callee||!e.callee.name)return[null,"",""];e.callee.toString();var r=e.callee.name,t="(",n=!0;for(var o in e){var i=e[o];n||(t+=", "),n=!1,t+="number"==typeof i||"string"==typeof i?i:"("+typeof i+")"}t+=")";var a=e.callee.caller;return n&&(t=""),[e=a?a.arguments:[],r,t]}function at(e,r){24&e&&(r=r.replace(/\s+$/,""),r+=(r.length>0?"\n":"")+function(e){var r=Pe(),t=r.lastIndexOf("_emscripten_log"),n=r.lastIndexOf("_emscripten_get_callstack"),o=r.indexOf("\n",Math.max(t,n))+1;r=r.slice(o),32&e&&T("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(T('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'),e^=8,e|=16);var i=null;if(128&e)for(i=it(arguments);i[1].includes("_emscripten_");)i=it(i[0]);var a=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),l=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),u=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in a){var d=a[c],f="",p="",m=0,h=0,g=u.exec(d);if(g&&5==g.length)f=g[1],p=g[2],m=g[3],h=g[4];else{if((g=s.exec(d))||(g=l.exec(d)),!(g&&g.length>=4)){r+=d+"\n";continue}f=g[1],p=g[2],m=g[3],h=0|g[4]}var v=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:m,column:h});(v=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+f+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!v)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(v?" = "+f:" at "+f)+" ("+p+":"+m+":"+h+")\n"),128&e&&i[0]&&(i[1]==f&&i[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+i[1]+i[2]+"\n"),i=it(i[0]))}return r.replace(/\s+$/,"")}(e)),1&e?4&e?console.error(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):console.log(r):6&e?_(r):b(r)}function st(e){try{return w.grow(e-L.byteLength+65535>>>16),Z(w.buffer),1}catch(r){_("emscripten_realloc_buffer: Attempted to grow heap from "+L.byteLength+" bytes to "+e+" bytes, but got error: "+r)}}var lt={};function ut(){if(!ut.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:n||"./this.program"};for(var r in lt)void 0===lt[r]?delete e[r]:e[r]=lt[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ut.strings=t}return ut.strings}var ct=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ie.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},dt=365,ft=146;function pt(e,r,t){var n=t>0?t:I(e)+1,o=new Array(n),i=M(e,o,0,o.length);return r&&(o.length=i),o}Object.defineProperties(ct.prototype,{read:{get:function(){return(this.mode&dt)===dt},set:function(e){e?this.mode|=dt:this.mode&=-366}},write:{get:function(){return(this.mode&ft)===ft},set:function(e){e?this.mode|=ft:this.mode&=-147}},isFolder:{get:function(){return Ie.isDir(this.mode)}},isDevice:{get:function(){return Ie.isChrdev(this.mode)}}}),Ie.FSNode=ct,Ie.staticInit(),Ne={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);Ue=e}(),Ve=r.BindingError=Ge(Error,"BindingError"),qe=r.InternalError=Ge(Error,"InternalError"),wr.prototype.isAliasOf=Qe,wr.prototype.clone=gr,wr.prototype.delete=vr,wr.prototype.isDeleted=yr,wr.prototype.deleteLater=Er,r.getInheritedInstanceCount=ir,r.getLiveInheritedInstances=ar,r.flushPendingDeletes=lr,r.setDelayFunction=cr,Or.prototype.getPointee=Ar,Or.prototype.destructor=Fr,Or.prototype.argPackAdvance=8,Or.prototype.readValueFromPointer=Pr,Or.prototype.deleteObject=Dr,Or.prototype.fromWireType=mr,Nr=r.UnboundTypeError=Ge(Error,"UnboundTypeError"),r.count_emval_handles=Gr,r.get_first_emval=Vr;var mt={__syscall_fcntl64:function(e,r,t){Le.varargs=t;try{var n=Le.getStreamFromFD(e);switch(r){case 0:return(o=Le.get())<0?-28:Ie.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=Le.get();return n.flags|=o,0;case 5:o=Le.get();return B[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return i=28,$[yt()>>2]=i,-1}}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}var i},__syscall_openat:function(e,r,t,n){Le.varargs=n;try{r=Le.getStr(r),r=Le.calculateAt(e,r);var o=n?Le.get():0;return Ie.open(r,t,o).fd}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}},_embind_register_bigint:function(e,r,t,n,o){},_embind_register_bool:function(e,r,t,n,o){var i=xe(t);Je(e,{name:r=Be(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=x;else if(2===t)n=B;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=$}return this.fromWireType(n[e>>i])},destructorFunction:null})},_embind_register_class:function(e,t,n,o,i,a,s,l,u,c,d,f,p){d=Be(d),a=Mr(i,a),l&&(l=Mr(s,l)),c&&(c=Mr(u,c)),p=Mr(f,p);var m=ze(d);!function(e,t,n){r.hasOwnProperty(e)?((void 0===n||void 0!==r[e].overloadTable&&void 0!==r[e].overloadTable[n])&&Ye("Cannot register public name '"+e+"' twice"),br(r,e,e),r.hasOwnProperty(n)&&Ye("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),r[e].overloadTable[n]=t):(r[e]=t,void 0!==n&&(r[e].numArguments=n))}(m,(function(){Lr("Cannot construct "+d+" due to unbound types",[o])})),Ke([e,t,n],o?[o]:[],(function(t){var n,i;t=t[0],i=o?(n=t.registeredClass).instancePrototype:wr.prototype;var s=He(m,(function(){if(Object.getPrototypeOf(this)!==u)throw new Ve("Use 'new' to construct "+d);if(void 0===f.constructor_body)throw new Ve(d+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ve("Tried to invoke ctor of "+d+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),u=Object.create(i,{constructor:{value:s}});s.prototype=u;var f=new _r(d,s,u,p,n,a,l,c),h=new Or(d,f,!0,!1,!1),g=new Or(d+"*",f,!1,!1,!1),v=new Or(d+" const*",f,!1,!0,!1);return or[e]={pointerType:g,constPointerType:v},function(e,t,n){r.hasOwnProperty(e)||Xe("Replacing nonexistant public symbol"),void 0!==r[e].overloadTable&&void 0!==n?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)}(m,s),[h,g,v]}))},_embind_register_class_constructor:function(e,r,t,n,o,i){F(r>0);var a=xr(r,t);o=Mr(n,o),Ke([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Ve("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=()=>{Lr("Cannot construct "+e.name+" due to unbound types",a)},Ke([],a,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=jr(t,n,null,o,i),[]})),[]}))},_embind_register_class_function:function(e,r,t,n,o,i,a,s){var l=xr(t,n);r=Be(r),i=Mr(o,i),Ke([],[e],(function(e){var n=(e=e[0]).name+"."+r;function o(){Lr("Cannot call "+n+" due to unbound types",l)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var u=e.registeredClass.instancePrototype,c=u[r];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===t-2?(o.argCount=t-2,o.className=e.name,u[r]=o):(br(u,r,n),u[r].overloadTable[t-2]=o),Ke([],l,(function(o){var s=jr(n,o,e,i,a);return void 0===u[r].overloadTable?(s.argCount=t-2,u[r]=s):u[r].overloadTable[t-2]=s,[]})),[]}))},_embind_register_class_property:function(e,r,t,n,o,i,a,s,l,u){r=Be(r),o=Mr(n,o),Ke([],[e],(function(e){var n=(e=e[0]).name+"."+r,c={get:function(){Lr("Cannot access "+n+" due to unbound types",[t,a])},enumerable:!0,configurable:!0};return c.set=l?()=>{Lr("Cannot access "+n+" due to unbound types",[t,a])}:e=>{Ye(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,c),Ke([],l?[t,a]:[t],(function(t){var a=t[0],c={get:function(){var r=$r(this,e,n+" getter");return a.fromWireType(o(i,r))},enumerable:!0};if(l){l=Mr(s,l);var d=t[1];c.set=function(r){var t=$r(this,e,n+" setter"),o=[];l(u,t,d.toWireType(o,r)),Ur(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,c),[]})),[]}))},_embind_register_emval:function(e,r){Je(e,{name:r=Be(r),fromWireType:function(e){var r=Yr.toValue(e);return Hr(e),r},toWireType:function(e,r){return Yr.toHandle(r)},argPackAdvance:8,readValueFromPointer:Pr,destructorFunction:null})},_embind_register_float:function(e,r,t){var n=xe(t);Je(e,{name:r=Be(r),fromWireType:function(e){return e},toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+qr(r)+'" to '+this.name);return r},argPackAdvance:8,readValueFromPointer:Xr(r,n),destructorFunction:null})},_embind_register_integer:function(e,r,t,n,o){r=Be(r),-1===o&&(o=4294967295);var i=xe(t),a=e=>e;if(0===n){var s=32-8*t;a=e=>e<>>s}var l=r.includes("unsigned"),u=(e,t)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError('Cannot convert "'+qr(e)+'" to '+t);if(eo)throw new TypeError('Passing a number "'+qr(e)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!")};Je(e,{name:r,fromWireType:a,toWireType:l?function(e,r){return u(r,this.name),r>>>0}:function(e,r){return u(r,this.name),r},argPackAdvance:8,readValueFromPointer:Kr(r,i,0!==n),destructorFunction:null})},_embind_register_memory_view:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=W,t=r[e>>=2],o=r[e+1];return new n(L,o,t)}Je(e,{name:t=Be(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},_embind_register_std_string:function(e,r){var t="std::string"===(r=Be(r));Je(e,{name:r,fromWireType:function(e){var r,n=W[e>>2];if(t)for(var o=e+4,i=0;i<=n;++i){var a=e+4+i;if(i==n||0==U[a]){var s=R(o,a-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=a+1}}else{var l=new Array(n);for(i=0;iI(r):()=>r.length)(),i=gt(4+o+1);if(W[i>>2]=o,t&&n)N(r,i+4,o+1);else if(n)for(var a=0;a255&&(ht(i),Ye("String has UTF-16 code units that do not fit in 8 bits")),U[i+4+a]=s}else for(a=0;aj,s=1):4===r&&(n=X,o=K,a=J,i=()=>W,s=2),Je(e,{name:t,fromWireType:function(e){for(var t,o=W[e>>2],a=i(),l=e+4,u=0;u<=o;++u){var c=e+4+u*r;if(u==o||0==a[c>>s]){var d=n(l,c-l);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),l=c+r}}return ht(e),t},toWireType:function(e,n){"string"!=typeof n&&Ye("Cannot pass non-string to C++ string type "+t);var i=a(n),l=gt(4+i+r);return W[l>>2]=i>>s,o(n,l+4,i+r),null!==e&&e.push(ht,l),l},argPackAdvance:8,readValueFromPointer:Pr,destructorFunction:function(e){ht(e)}})},_embind_register_void:function(e,r){Je(e,{isVoid:!0,name:r=Be(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},_emscripten_date_now:function(){return Date.now()},_emval_as:function(e,r,t){e=Yr.toValue(e),r=Jr(r,"emval::as");var n=[],o=Yr.toHandle(n);return $[t>>2]=o,r.toWireType(n,e)},_emval_call_void_method:function(e,r,t,n){var o,i;(e=Zr[e])(r=Yr.toValue(r),t=void 0===(i=Qr[o=t])?Be(o):i,null,n)},_emval_decref:Hr,_emval_get_method_caller:function(e,r){var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",i=et[o];if(void 0!==i)return i;for(var a=["retType"],s=[n],l="",u=0;u4&&(zr[e].refcount+=1)},_emval_run_destructors:function(e){Ur(Yr.toValue(e)),Hr(e)},_emval_take_value:function(e,r){var t=(e=Jr(e,"_emval_take_value")).readValueFromPointer(r);return Yr.toHandle(t)},_gmtime_js:function(e,r){var t=new Date(1e3*$[e>>2]);$[r>>2]=t.getUTCSeconds(),$[r+4>>2]=t.getUTCMinutes(),$[r+8>>2]=t.getUTCHours(),$[r+12>>2]=t.getUTCDate(),$[r+16>>2]=t.getUTCMonth(),$[r+20>>2]=t.getUTCFullYear()-1900,$[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;$[r+28>>2]=o},_localtime_js:function(e,r){var t=new Date(1e3*$[e>>2]);$[r>>2]=t.getSeconds(),$[r+4>>2]=t.getMinutes(),$[r+8>>2]=t.getHours(),$[r+12>>2]=t.getDate(),$[r+16>>2]=t.getMonth(),$[r+20>>2]=t.getFullYear()-1900,$[r+24>>2]=t.getDay();var n=new Date(t.getFullYear(),0,1),o=(t.getTime()-n.getTime())/864e5|0;$[r+28>>2]=o,$[r+36>>2]=-60*t.getTimezoneOffset();var i=new Date(t.getFullYear(),6,1).getTimezoneOffset(),a=n.getTimezoneOffset(),s=0|(i!=a&&t.getTimezoneOffset()==Math.min(a,i));$[r+32>>2]=s},_mktime_js:function(e){var r=new Date($[e+20>>2]+1900,$[e+16>>2],$[e+12>>2],$[e+8>>2],$[e+4>>2],$[e>>2],0),t=$[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),i=new Date(r.getFullYear(),6,1).getTimezoneOffset(),a=o.getTimezoneOffset(),s=Math.min(a,i);if(t<0)$[e+32>>2]=Number(i!=a&&s==n);else if(t>0!=(s==n)){var l=Math.max(a,i),u=t>0?s:l;r.setTime(r.getTime()+6e4*(u-n))}$[e+24>>2]=r.getDay();var c=(r.getTime()-o.getTime())/864e5|0;return $[e+28>>2]=c,$[e>>2]=r.getSeconds(),$[e+4>>2]=r.getMinutes(),$[e+8>>2]=r.getHours(),$[e+12>>2]=r.getDate(),$[e+16>>2]=r.getMonth(),r.getTime()/1e3|0},_tzset_js:function e(r,t,n){e.called||(e.called=!0,function(e,r,t){var n=(new Date).getFullYear(),o=new Date(n,0,1),i=new Date(n,6,1),a=o.getTimezoneOffset(),s=i.getTimezoneOffset(),l=Math.max(a,s);function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}$[e>>2]=60*l,$[r>>2]=Number(a!=s);var c=u(o),d=u(i),f=Q(c),p=Q(d);s>2]=f,$[t+4>>2]=p):($[t>>2]=p,$[t+4>>2]=f)}(r,t,n))},abort:function(){ge("native code called abort()")},emscripten_log:function(e,r,t){at(e,O(ot(r,t),0))},emscripten_resize_heap:function(e){var r=U.length;F((e>>>=0)>r);var t,n,o=2147483648;if(e>o)return _("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(o,(t=Math.max(e,a))+((n=65536)-t%n)%n);if(st(s))return!0}return _("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return ut().forEach((function(n,o){var i=r+t;$[e+4*o>>2]=i,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(x[r>>0]=0)}(n,i),t+=n.length+1})),0},environ_sizes_get:function(e,r){var t=ut();$[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),$[r>>2]=n,0},fd_close:function(e){try{var r=Le.getStreamFromFD(e);return Ie.close(r),0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=Le.getStreamFromFD(e),n=t.tty?2:Ie.isDir(t.mode)?3:Ie.isLink(t.mode)?7:4;return x[r>>0]=n,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),i=Le.doReadv(o,r,t);return $[n>>2]=i,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_seek:function(e,r,t,n,o){try{var i=Le.getStreamFromFD(e),a=4294967296*t+(r>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(Ie.llseek(i,a,n),Ee=[i.position>>>0,(ye=i.position,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[o>>2]=Ee[0],$[o+4>>2]=Ee[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),i=Le.doWritev(o,r,t);return $[n>>2]=i,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},setTempRet0:function(e){}};!function(){var e={env:mt,wasi_snapshot_preview1:mt};function t(e,t){var n,o=e.exports;r.asm=o,F(w=r.asm.memory,"memory not found in wasm exports"),Z(w.buffer),F(re=r.asm.__indirect_function_table,"table not found in wasm exports"),n=r.asm.__wasm_call_ctors,ae.unshift(n),he("wasm-instantiate")}me("wasm-instantiate");var n=r;function o(e){F(r===n,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),n=null,t(e.instance)}function i(r){return function(){if(!E&&(s||l)){if("function"==typeof fetch&&!be(ve))return fetch(ve,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ve+"'";return e.arrayBuffer()})).catch((function(){return Te(ve)}));if(f)return new Promise((function(e,r){f(ve,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return Te(ve)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then((function(e){return e})).then(r,(function(e){_("failed to asynchronously prepare wasm: "+e),be(ve)&&_("warning: Loading from a file URI ("+ve+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),ge(e)}))}if(r.instantiateWasm)try{return r.instantiateWasm(e,t)}catch(e){return _("Module.instantiateWasm callback failed with error: "+e),!1}E||"function"!=typeof WebAssembly.instantiateStreaming||we(ve)||be(ve)||"function"!=typeof fetch?i(o):fetch(ve,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(o,(function(e){return _("wasm streaming compile failed: "+e),_("falling back to ArrayBuffer instantiation"),i(o)}))}))}(),r.___wasm_call_ctors=_e("__wasm_call_ctors");var ht=r._free=_e("free"),gt=r._malloc=_e("malloc"),vt=r._strlen=_e("strlen"),yt=r.___errno_location=_e("__errno_location"),Et=r.___getTypeName=_e("__getTypeName");r.___embind_register_native_and_builtin_types=_e("__embind_register_native_and_builtin_types");var wt=r.___stdio_exit=_e("__stdio_exit"),bt=r._emscripten_builtin_memalign=_e("emscripten_builtin_memalign"),_t=r._emscripten_stack_init=function(){return(_t=r._emscripten_stack_init=r.asm.emscripten_stack_init).apply(null,arguments)};r._emscripten_stack_get_free=function(){return(r._emscripten_stack_get_free=r.asm.emscripten_stack_get_free).apply(null,arguments)},r._emscripten_stack_get_base=function(){return(r._emscripten_stack_get_base=r.asm.emscripten_stack_get_base).apply(null,arguments)};var Tt,kt=r._emscripten_stack_get_end=function(){return(kt=r._emscripten_stack_get_end=r.asm.emscripten_stack_get_end).apply(null,arguments)};function St(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ct(e){function t(){Tt||(Tt=!0,r.calledRun=!0,A||(oe(),F(!le),le=!0,r.noFSInit||Ie.init.initialized||Ie.init(),Ie.ignorePermissions=!1,ke(ae),r.onRuntimeInitialized&&r.onRuntimeInitialized(),F(!r._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(oe(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),se.unshift(e);var e;ke(se)}()))}ue>0||(_t(),ne(),function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)e=r.preRun.shift(),ie.unshift(e);var e;ke(ie)}(),ue>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),t()}),1)):t(),oe()))}if(r.stackSave=_e("stackSave"),r.stackRestore=_e("stackRestore"),r.stackAlloc=_e("stackAlloc"),r.dynCall_ijiii=_e("dynCall_ijiii"),r.dynCall_viiijj=_e("dynCall_viiijj"),r.dynCall_jij=_e("dynCall_jij"),r.dynCall_jii=_e("dynCall_jii"),r.dynCall_jiji=_e("dynCall_jiji"),r._ff_h264_cabac_tables=112940,P("intArrayFromString",!1),P("intArrayToString",!1),P("ccall",!1),P("cwrap",!1),P("setValue",!1),P("getValue",!1),P("allocate",!1),P("UTF8ArrayToString",!1),P("UTF8ToString",!1),P("stringToUTF8Array",!1),P("stringToUTF8",!1),P("lengthBytesUTF8",!1),P("stackTrace",!1),P("addOnPreRun",!1),P("addOnInit",!1),P("addOnPreMain",!1),P("addOnExit",!1),P("addOnPostRun",!1),P("writeStringToMemory",!1),P("writeArrayToMemory",!1),P("writeAsciiToMemory",!1),P("addRunDependency",!0),P("removeRunDependency",!0),P("FS_createFolder",!1),P("FS_createPath",!0),P("FS_createDataFile",!0),P("FS_createPreloadedFile",!0),P("FS_createLazyFile",!0),P("FS_createLink",!1),P("FS_createDevice",!0),P("FS_unlink",!0),P("getLEB",!1),P("getFunctionTables",!1),P("alignFunctionTables",!1),P("registerFunctions",!1),P("addFunction",!1),P("removeFunction",!1),P("prettyPrint",!1),P("dynCall",!1),P("getCompilerSetting",!1),P("print",!1),P("printErr",!1),P("getTempRet0",!1),P("setTempRet0",!1),P("callMain",!1),P("abort",!1),P("keepRuntimeAlive",!1),P("ptrToString",!1),P("zeroMemory",!1),P("stringToNewUTF8",!1),P("emscripten_realloc_buffer",!1),P("ENV",!1),P("ERRNO_CODES",!1),P("ERRNO_MESSAGES",!1),P("setErrNo",!1),P("inetPton4",!1),P("inetNtop4",!1),P("inetPton6",!1),P("inetNtop6",!1),P("readSockaddr",!1),P("writeSockaddr",!1),P("DNS",!1),P("getHostByName",!1),P("Protocols",!1),P("Sockets",!1),P("getRandomDevice",!1),P("traverseStack",!1),P("UNWIND_CACHE",!1),P("convertPCtoSourceLocation",!1),P("readAsmConstArgsArray",!1),P("readAsmConstArgs",!1),P("mainThreadEM_ASM",!1),P("jstoi_q",!1),P("jstoi_s",!1),P("getExecutableName",!1),P("listenOnce",!1),P("autoResumeAudioContext",!1),P("dynCallLegacy",!1),P("getDynCaller",!1),P("dynCall",!1),P("setWasmTableEntry",!1),P("getWasmTableEntry",!1),P("handleException",!1),P("runtimeKeepalivePush",!1),P("runtimeKeepalivePop",!1),P("callUserCallback",!1),P("maybeExit",!1),P("safeSetTimeout",!1),P("asmjsMangle",!1),P("asyncLoad",!1),P("alignMemory",!1),P("mmapAlloc",!1),P("reallyNegative",!1),P("unSign",!1),P("reSign",!1),P("formatString",!1),P("PATH",!1),P("PATH_FS",!1),P("SYSCALLS",!1),P("getSocketFromFD",!1),P("getSocketAddress",!1),P("JSEvents",!1),P("registerKeyEventCallback",!1),P("specialHTMLTargets",!1),P("maybeCStringToJsString",!1),P("findEventTarget",!1),P("findCanvasEventTarget",!1),P("getBoundingClientRect",!1),P("fillMouseEventData",!1),P("registerMouseEventCallback",!1),P("registerWheelEventCallback",!1),P("registerUiEventCallback",!1),P("registerFocusEventCallback",!1),P("fillDeviceOrientationEventData",!1),P("registerDeviceOrientationEventCallback",!1),P("fillDeviceMotionEventData",!1),P("registerDeviceMotionEventCallback",!1),P("screenOrientation",!1),P("fillOrientationChangeEventData",!1),P("registerOrientationChangeEventCallback",!1),P("fillFullscreenChangeEventData",!1),P("registerFullscreenChangeEventCallback",!1),P("registerRestoreOldStyle",!1),P("hideEverythingExceptGivenElement",!1),P("restoreHiddenElements",!1),P("setLetterbox",!1),P("currentFullscreenStrategy",!1),P("restoreOldWindowedStyle",!1),P("softFullscreenResizeWebGLRenderTarget",!1),P("doRequestFullscreen",!1),P("fillPointerlockChangeEventData",!1),P("registerPointerlockChangeEventCallback",!1),P("registerPointerlockErrorEventCallback",!1),P("requestPointerLock",!1),P("fillVisibilityChangeEventData",!1),P("registerVisibilityChangeEventCallback",!1),P("registerTouchEventCallback",!1),P("fillGamepadEventData",!1),P("registerGamepadEventCallback",!1),P("registerBeforeUnloadEventCallback",!1),P("fillBatteryEventData",!1),P("battery",!1),P("registerBatteryEventCallback",!1),P("setCanvasElementSize",!1),P("getCanvasElementSize",!1),P("demangle",!1),P("demangleAll",!1),P("jsStackTrace",!1),P("stackTrace",!1),P("getEnvStrings",!1),P("checkWasiClock",!1),P("writeI53ToI64",!1),P("writeI53ToI64Clamped",!1),P("writeI53ToI64Signaling",!1),P("writeI53ToU64Clamped",!1),P("writeI53ToU64Signaling",!1),P("readI53FromI64",!1),P("readI53FromU64",!1),P("convertI32PairToI53",!1),P("convertU32PairToI53",!1),P("dlopenMissingError",!1),P("setImmediateWrapped",!1),P("clearImmediateWrapped",!1),P("polyfillSetImmediate",!1),P("uncaughtExceptionCount",!1),P("exceptionLast",!1),P("exceptionCaught",!1),P("ExceptionInfo",!1),P("exception_addRef",!1),P("exception_decRef",!1),P("Browser",!1),P("setMainLoop",!1),P("wget",!1),P("FS",!1),P("MEMFS",!1),P("TTY",!1),P("PIPEFS",!1),P("SOCKFS",!1),P("_setNetworkCallback",!1),P("tempFixedLengthArray",!1),P("miniTempWebGLFloatBuffers",!1),P("heapObjectForWebGLType",!1),P("heapAccessShiftForWebGLHeap",!1),P("GL",!1),P("emscriptenWebGLGet",!1),P("computeUnpackAlignedImageSize",!1),P("emscriptenWebGLGetTexPixelData",!1),P("emscriptenWebGLGetUniform",!1),P("webglGetUniformLocation",!1),P("webglPrepareUniformLocationsBeforeFirstUse",!1),P("webglGetLeftBracePos",!1),P("emscriptenWebGLGetVertexAttrib",!1),P("writeGLArray",!1),P("AL",!1),P("SDL_unicode",!1),P("SDL_ttfContext",!1),P("SDL_audio",!1),P("SDL",!1),P("SDL_gfx",!1),P("GLUT",!1),P("EGL",!1),P("GLFW_Window",!1),P("GLFW",!1),P("GLEW",!1),P("IDBStore",!1),P("runAndAbortIfError",!1),P("InternalError",!1),P("BindingError",!1),P("UnboundTypeError",!1),P("PureVirtualError",!1),P("init_embind",!1),P("throwInternalError",!1),P("throwBindingError",!1),P("throwUnboundTypeError",!1),P("ensureOverloadTable",!1),P("exposePublicSymbol",!1),P("replacePublicSymbol",!1),P("extendError",!1),P("createNamedFunction",!1),P("registeredInstances",!1),P("getBasestPointer",!1),P("registerInheritedInstance",!1),P("unregisterInheritedInstance",!1),P("getInheritedInstance",!1),P("getInheritedInstanceCount",!1),P("getLiveInheritedInstances",!1),P("registeredTypes",!1),P("awaitingDependencies",!1),P("typeDependencies",!1),P("registeredPointers",!1),P("registerType",!1),P("whenDependentTypesAreResolved",!1),P("embind_charCodes",!1),P("embind_init_charCodes",!1),P("readLatin1String",!1),P("getTypeName",!1),P("heap32VectorToArray",!1),P("requireRegisteredType",!1),P("getShiftFromSize",!1),P("integerReadValueFromPointer",!1),P("enumReadValueFromPointer",!1),P("floatReadValueFromPointer",!1),P("simpleReadValueFromPointer",!1),P("runDestructors",!1),P("new_",!1),P("craftInvokerFunction",!1),P("embind__requireFunction",!1),P("tupleRegistrations",!1),P("structRegistrations",!1),P("genericPointerToWireType",!1),P("constNoSmartPtrRawPointerToWireType",!1),P("nonConstNoSmartPtrRawPointerToWireType",!1),P("init_RegisteredPointer",!1),P("RegisteredPointer",!1),P("RegisteredPointer_getPointee",!1),P("RegisteredPointer_destructor",!1),P("RegisteredPointer_deleteObject",!1),P("RegisteredPointer_fromWireType",!1),P("runDestructor",!1),P("releaseClassHandle",!1),P("finalizationRegistry",!1),P("detachFinalizer_deps",!1),P("detachFinalizer",!1),P("attachFinalizer",!1),P("makeClassHandle",!1),P("init_ClassHandle",!1),P("ClassHandle",!1),P("ClassHandle_isAliasOf",!1),P("throwInstanceAlreadyDeleted",!1),P("ClassHandle_clone",!1),P("ClassHandle_delete",!1),P("deletionQueue",!1),P("ClassHandle_isDeleted",!1),P("ClassHandle_deleteLater",!1),P("flushPendingDeletes",!1),P("delayFunction",!1),P("setDelayFunction",!1),P("RegisteredClass",!1),P("shallowCopyInternalPointer",!1),P("downcastPointer",!1),P("upcastPointer",!1),P("validateThis",!1),P("char_0",!1),P("char_9",!1),P("makeLegalFunctionName",!1),P("emval_handle_array",!1),P("emval_free_list",!1),P("emval_symbols",!1),P("init_emval",!1),P("count_emval_handles",!1),P("get_first_emval",!1),P("getStringOrSymbol",!1),P("Emval",!1),P("emval_newers",!1),P("craftEmvalAllocator",!1),P("emval_get_global",!1),P("emval_methodCallers",!1),P("emval_registeredMethods",!1),P("warnOnce",!1),P("stackSave",!1),P("stackRestore",!1),P("stackAlloc",!1),P("AsciiToString",!1),P("stringToAscii",!1),P("UTF16ToString",!1),P("stringToUTF16",!1),P("lengthBytesUTF16",!1),P("UTF32ToString",!1),P("stringToUTF32",!1),P("lengthBytesUTF32",!1),P("allocateUTF8",!1),P("allocateUTF8OnStack",!1),r.writeStackCookie=ne,r.checkStackCookie=oe,C("ALLOC_NORMAL",!1),C("ALLOC_STACK",!1),de=function e(){Tt||Ct(),Tt||(de=e)},r.run=Ct,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();Ct(),e.exports=r}));const u=1e3,c=1e3,d=!1,f=!1,p=!1,m=!1,h="initVideo",g="render",v="playAudio",y="initAudio",E="audioCode",w="videoCode",b=1,_=2,T="init",k="decode",S="audioDecode",C="videoDecode",P="close",A="updateConfig",F="key",D="delta";s((function(e){!function(){var r="undefined"!=typeof window&&void 0!==window.document?window.document:{},t=e.exports,n=function(){for(var e,t=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n=0,o=t.length,i={};n{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),l.postRun=function(){var e=[],r=[],t={};"VideoEncoder"in self&&(t={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){t.isEmitInfo||(n.opt.debug&&console.log("Jb: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:h,w:e.codedWidth,h:e.codedHeight}),t.isEmitInfo=!0,t.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),t.offscreenCanvasCtx=t.offscreenCanvas.getContext("2d")),t.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let r=t.offscreenCanvas.transferToImageBitmap();postMessage({cmd:g,buffer:r,delay:n.delay,ts:0},[r]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,r){const o=e[0]>>4==1;if(t.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:r,type:o?F:D});t.decoder.decode(n)}else if(o&&0===e[1]){const r=15&e[0];n.setVideoCodec(r);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));t.decoder.configure(o),t.hasInit=!0}},reset(){t.hasInit=!1,t.isEmitInfo=!1,t.offscreenCanvas=null,t.offscreenCanvasCtx=null}});var n={opt:{debug:d,useOffscreen:p,useWCS:f,videoBuffer:u,openWebglAlignment:m,videoBufferDelay:c},useOffscreen:function(){return n.opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,t){postMessage({cmd:y,sampleRate:t,channels:e});var n=[],o=0;this.playAudioPlanar=function(t,i,a){for(var s=i,u=[],c=0,d=0;d<2;d++){var f=l.HEAPU32[(t>>2)+d]>>2;u[d]=l.HEAPF32.subarray(f,f+s)}if(o){if(!(s>=(i=1024-o)))return o+=s,r[0]=Float32Array.of(...r[0],...u[0]),void(2==e&&(r[1]=Float32Array.of(...r[1],...u[1])));n[0]=Float32Array.of(...r[0],...u[0].subarray(0,i)),2==e&&(n[1]=Float32Array.of(...r[1],...u[1].subarray(0,i))),postMessage({cmd:v,buffer:n,ts:a},n.map((e=>e.buffer))),c=i,s-=i}for(o=s;o>=1024;o-=1024)n[0]=u[0].slice(c,c+=1024),2==e&&(n[1]=u[1].slice(c-1024,c)),postMessage({cmd:v,buffer:n,ts:a},n.map((e=>e.buffer)));o&&(r[0]=u[0].slice(c),2==e&&(r[1]=u[1].slice(c)))}},setVideoCodec:function(e){postMessage({cmd:w,code:e})},setAudioCodec:function(e){postMessage({cmd:E,code:e})},setVideoSize:function(e,r){postMessage({cmd:h,w:e,h:r});var t=e*r,o=t>>2;n.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=((e,r)=>{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),n=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");r&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var i=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(i,n),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(i));var a=e.createProgram();e.attachShader(a,o),e.attachShader(a,i),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var l=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(l),e.vertexAttribPointer(l,2,e.FLOAT,!1,0,0);var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function d(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,r),t),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var f=d("ySampler",0),p=d("uSampler",1),m=d("vSampler",2);return{render:function(r,t,n,o,i){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,f),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,m),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,i),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(s),e.deleteBuffer(u),e.deleteTexture(f),e.deleteTexture(p),e.deleteTexture(m)}catch(e){}}}})(this.offscreenCanvasGL,n.opt.openWebglAlignment),this.draw=function(n,i,a,s){const u=l.HEAPU8.subarray(i,i+t),c=l.HEAPU8.subarray(a,a+o),d=l.HEAPU8.subarray(s,s+o);this.webglObj.render(e,r,u,c,d);let f=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:g,buffer:f,delay:this.delay,ts:n},[f])}):this.draw=function(e,r,n,i){const a=[Uint8Array.from(l.HEAPU8.subarray(r,r+t)),Uint8Array.from(l.HEAPU8.subarray(n,n+o)),Uint8Array.from(l.HEAPU8.subarray(i,i+o))];postMessage({cmd:g,output:a,delay:this.delay,ts:e},a.map((e=>e.buffer)))}},getDelay:function(e){if(!e)return-1;if(this.firstTimestamp){if(e){const r=Date.now()-this.startTimestamp,t=e-this.firstTimestamp;this.delay=r>=t?r-t:t-r}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay},resetDelay:function(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1},init:function(){n.opt.debug&&console.log("Jb: [worker] init");const r=e=>{n.opt.useWCS&&n.useOffscreen()&&e.type===_&&t.decode?t.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for((t=e.shift()).type===b&&0===t.payload[1]&&r(t);!t.isIFrame&&e.length;)(t=e.shift()).type===b&&0===t.payload[1]&&r(t);t.isIFrame&&(this.dropping=!1,r(t))}else{var t=e[0];if(-1===this.getDelay(t.ts))e.shift(),r(t);else if(this.delay>n.opt.videoBuffer+n.opt.videoBufferDelay)this.resetDelay(),this.dropping=!0;else for(;e.length&&(t=e[0],this.getDelay(t.ts)>n.opt.videoBuffer);)e.shift(),r(t)}}),10)},close:function(){n.opt.debug&&console.log("Jb: [worker]: close"),clearInterval(this.stopId),this.stopId=null,o.clear&&o.clear(),i.clear&&i.clear(),t.reset&&t.reset(),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],r=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===b?e.push({ts:t.ts,payload:r,decoder:o,type:b}):t.type===_&&e.push({ts:t.ts,payload:r,decoder:i,type:_,isIFrame:t.isIFrame})}},o=new l.AudioDecoder(n),i=new l.VideoDecoder(n);postMessage({cmd:T}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case T:try{n.opt=Object.assign(n.opt,JSON.parse(r.opt))}catch(e){}o.sample_rate=r.sampleRate,n.init();break;case k:n.pushBuffer(r.buffer,r.options);break;case S:o.decode(r.buffer,r.ts);break;case C:i.decode(r.buffer,r.ts);break;case P:n.close();break;case A:n.opt[r.key]=r.value}}}})); diff --git a/dist/jessibuca.js b/dist/jessibuca.js index 10e106c6..3be37026 100644 --- a/dist/jessibuca.js +++ b/dist/jessibuca.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function i(e,t){return e(t={exports:{}},t.exports),t.exports}var o=i((function(e){function t(i){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(i)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}));t(o);var r=i((function(e){var t=o.default;e.exports=function(e,i){if("object"!==t(e)||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var r=o.call(e,i||"default");if("object"!==t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports}));t(r);var s=i((function(e){var t=o.default;e.exports=function(e){var i=r(e,"string");return"symbol"===t(i)?i:String(i)},e.exports.__esModule=!0,e.exports.default=e.exports}));t(s);var a=t(i((function(e){e.exports=function(e,t,i){return(t=s(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})));const n=0,A=1,d="flv",c="m7s",l="mp4",u="webm",h="jessibuca",p={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:A,demuxType:d,useWCS:!1,wcsUseVideoRender:!0,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:u,useWebFullScreen:!1},m="init",g="initVideo",f="render",b="playAudio",y="initAudio",v="audioCode",w="videoCode",S="wasmError",E="Invalid NAL unit size",B=1,C=2,R=8,k=9,T="init",I="decode",x="audioDecode",D="close",j="updateConfig",L={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",volume:"volume",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},F={load:L.load,timeUpdate:L.timeUpdate,videoInfo:L.videoInfo,audioInfo:L.audioInfo,error:L.error,kBps:L.kBps,log:L.log,start:L.start,timeout:L.timeout,loadingTimeout:L.loadingTimeout,delayTimeout:L.delayTimeout,fullscreen:"fullscreen",webFullscreen:L.webFullscreen,play:L.play,pause:L.pause,mute:L.mute,stats:L.stats,volumechange:L.volumechange,performance:L.performance,recordingTimestamp:L.recordingTimestamp,recordStart:L.recordStart,recordEnd:L.recordEnd,playToRenderTimes:L.playToRenderTimes,volume:L.volume},O={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsConfigureError:"webcodecsConfigureError",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:L.mseSourceBufferFull,mseSourceBufferError:L.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},V="notConnect",M="open",U="close",Q="error",W={download:"download",base64:"base64",blob:"blob"},J={7:"H264(AVC)",12:"H265(HEVC)"},P=12,G={10:"AAC",7:"ALAW",8:"MULAW"},N=38,H=0,z=1,Y=2,X="webcodecs",q="webgl",Z="offscreen",K="key",_="delta",$='video/mp4; codecs="avc1.64002A"',ee="ended",te="open",ie="closed",oe=1e3,re=27,se=38,ae=40,ne="A key frame is required after configure() or flush()",Ae="Cannot call 'decode' on a closed codec",de="The user aborted a request",ce="AbortError",le="AbortError",ue=0,he=1,pe=3,me=16;class ge{constructor(e){this.log=(t,...i)=>{e._opt&&e._opt.debug&&console.log(`Jessibuca: [${t}]`,...i)},this.warn=(t,...i)=>{e._opt&&e._opt.debug&&console.warn(`Jessibuca: [${t}]`,...i)},this.error=(e,...t)=>{console.error(`Jessibuca: [${e}]`,...t)}}}class fe{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i,o={}){if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,o)));e.addEventListener(t,i,o);const r=()=>e.removeEventListener(t,i,o);return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var be=i((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,o=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],o=0,r=i.length,s={};o{Ee(e,i,t[i])})),e.style[t]=i,e}function Be(e,t,i=!0){if(!e)return 0;const o=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(o):o}function Ce(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Re(e){let t=0,i=Ce();return o=>{t+=o;const r=Ce(),s=r-i;s>=1e3&&(e(t/s*1e3),i=r,t=0)}}function ke(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function Te(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Ie(e){return null==e}function xe(e){return!0===e||!1===e}function De(e){return!Ie(e)}function je(e){var t;if(e>-1){var i=Math.floor(e/3600),o=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",o<10&&(t+="0"),t+=o+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function Le(e){const t=e||window.event;return t.target||t.srcElement}function Fe(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function Oe(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const o=new Uint8Array(i.length+e.byteLength);return o.set(i,0),o.set(e,i.length),o}function Ve(e){return!0!==e&&"true"!==e}be.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class Me{on(e,t,i){const o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const o=this;function r(...s){o.off(e,r),t.apply(i,s)}return r._=t,this.on(e,r,i)}emit(e,...t){const i=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete i[e]})),void delete this.e;const o=i[e],r=[];if(o&&t)for(let e=0,i=o.length;e=200&&t.status<=299}function Pe(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Ge=Qe.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ne="object"!=typeof window||window!==Qe?function(){}:"download"in HTMLAnchorElement.prototype&&!Ge?function(e,t,i){var o=Qe.URL||Qe.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Je(r.href)?We(e,t,i):Pe(r,r.target="_blank"):Pe(r)):(r.href=o.createObjectURL(e),setTimeout((function(){o.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Pe(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Je(e))We(e,t,i);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){Pe(o)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return We(e,t,i);var r="application/octet-stream"===e.type,s=/constructor/i.test(Qe.HTMLElement)||Qe.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&s||Ge)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},n.readAsDataURL(e)}else{var A=Qe.URL||Qe.webkitURL,d=A.createObjectURL(e);o?o.location=d:location.href=d,o=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class He extends Ue{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let o=0;for(;!t&&o{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),o=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(r));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,o),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,r),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var o=e.createTexture();return e.bindTexture(e.TEXTURE_2D,o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),o}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,o,r,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=X,this._initContext2D()):this._supportOffscreen()?(this.renderType=Z,this._bindOffscreen()):(this.renderType=q,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case Z:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case q:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case X:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,o){e=e||we(),o=o||W.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&W[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(r[t]||r.png,s);if(o===W.base64)return a;{const t=ve(a);if(o===W.blob)return t;o===W.download&&Ne(t,e)}}clearView(){switch(this.renderType){case Z:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case q:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case X:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;this.player.isControlBarShow()&&(ke()&&this.player.fullscreen&&e.useWebFullScreen?t-=N:i-=N);let o=this.$videoElement.width,r=this.$videoElement.height;const s=e.rotate;let a=(t-o)/2,n=(i-r)/2;270!==s&&90!==s||(o=this.$videoElement.height,r=this.$videoElement.width);const A=t/o,d=i/r;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class ze extends Ue{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.disablePictureInPicture=!0,function(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const o=this.player._opt;o.useWCS&&o.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:r}=this.player.events;r(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&(this.player.debug.log("Video","canplay and _delayPlay is true and next play()"),this._play())})),r(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),r(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(L.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}async destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let o in i)if(i[o]){let i="";if("IE"===o)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===o){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(o="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===o?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===o?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===o?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===o?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===o&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=o,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,o){e=e||we(),o=o||W.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&W[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(r[t]||r.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,o===W.base64)return A;{const t=ve(A);if(o===W.blob)return t;o===W.download&&Ne(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,o=i.rotate;this.player.isControlBarShow()&&(ke()&&this.player.fullscreen&&i.useWebFullScreen?e-=N:t-=N),this.$videoElement.width=e,this.$videoElement.height=t,270!==o&&90!==o||(this.$videoElement.width=t,this.$videoElement.height=e);let r=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+o+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class Ye{constructor(e){return new(Ye.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?ze:He}}class Xe extends Me{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(L.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}async destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=ye,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this._prevVolume=null,this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=G[e.encTypeCode],this.audioInfo.encTypeCode=e.encTypeCode),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(L.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>oe)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let o=0;o0?this.player.emit(L.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(L.mute,!0),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(L.volumechange,this.player.volume),this.player.emit(L.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){this.isMute||(this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t}),this.bufferList.length>20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}}class qe{constructor(e){return new(qe.getLoaderFactory())(e)}static getLoaderFactory(){return Xe}}class Ze extends Me{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Re((t=>{e.emit(L.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}async destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e,t={}){const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=we();const o=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,o).then((e=>{const t=e.body.getReader();this.emit(L.streamSuccess);const o=()=>{t.read().then((({done:e,value:t})=>{e?i.close():(this.streamRate&&this.streamRate(t.byteLength),i.dispatch(t),o())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(de)&&-1===t.indexOf(ce)&&e.name!==le&&(this.abort(),this.emit(O.fetchError,e),this.player.emit(L.error,O.fetchError))}))};o()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(O.fetchError,e),this.player.emit(L.error,O.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ke extends Me{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=V,this.wsUrl=null,this.streamRate=Re((t=>{e.emit(L.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}async destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=V,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:o}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(L.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=M})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(L.streamEnd),this.socketStatus=U})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(O.websocketError,e),this.player.emit(L.error,O.websocketError),this.socketStatus=Q,o.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=we(),this.wsUrl=e,this._createWebSocket()}}class _e{constructor(e){return new(_e.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===A?Ze:e===n?Ke:void 0}}var $e=i((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new o(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var o=new r(e,t);(h=new o(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var o=h.blob;if(!o){if(!i)throw"Recording failed.";h.blob=o=i}if(o&&!t.disableLogs&&console.log(o.type,"->",b(o.size)),e){var r;try{r=l.createObjectURL(o)}catch(e){}"function"==typeof e.call?e.call(s,r):e(r)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var o=i?i.blob:(h||{}).blob;if(!o)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var r=new FileReader;r.readAsDataURL(o),r.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(o)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new o(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,o=0;o-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),m=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),g=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);g&&!m&&-1!==navigator.userAgent.indexOf("CriOS")&&(g=!1,m=!0);var f=window.MediaStream;function b(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function y(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var o=t.split(".");t=o[0],i=o[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=r,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),void 0!==i&&(i.invokeSaveAsDialog=y,i.getTracks=w,i.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,o=new EBML.Decoder,r=EBML.tools,s=new FileReader;s.onload=function(e){o.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v);var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(m||h)&&(e=i.indexOf("Chrome"),o=i.substring(e+7)),-1!==(t=o.indexOf(";"))&&(o=o.substring(0,t)),-1!==(t=o.indexOf(" "))&&(o=o.substring(0,t)),r=parseInt(""+o,10),isNaN(r)&&(o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function C(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var o;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(o=new f).addTrack(w(e,"audio")[0]):o=new f(w(e,"audio")),e=o;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=m?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function A(){s=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var o=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",o),r&&(r=null),m&&!B()&&(o="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&o.mimeType&&(MediaRecorder.isTypeSupported(o.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType),o.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,o),t.mimeType=o.mimeType}catch(t){r=new MediaRecorder(e)}o.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(o.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",o.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(A),A()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function o(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(o,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var o,r=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,o=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var o=Math.round(e.length*(t/i)),r=[],s=Number((e.length-1)/(o-1));r[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,r.leftchannel=s,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=b,r.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){o&&(o.onaudioprocess=null,o.disconnect(),o=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;o.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),o.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,r.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?o.connect(p.createMediaStreamDestination()):o.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,r.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var o=new Blob([i],{type:"audio/wav"});t.ondataavailable(o),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var o,r,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)o=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";o=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(s=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in o?e=o.captureStream(25):"mozCaptureStream"in o?e=o.mozCaptureStream(25):"webkitCaptureStream"in o&&(e=o.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var o=h.frames.length;h.frames.forEach((function(e,i){var r=o-i;t.disableLogs||console.log(r+"/"+o+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,o);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var o=this;i&&r?r.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),o.blob=i,o.blob.forEach&&(o.blob=new Blob([],{type:"video/webm"})),e&&e(o.blob),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(o=document.createElement("canvas"),r=o.getContext("2d"),o.width=e.width,o.height=e.height,r.drawImage(e,0,0),o),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var o,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof C&&r.pause()},this.resume=function(){d=!1,r instanceof C?r.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function o(e,t,i,o,r){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=o&&o>=0&&o<=1?o:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var o,r,s,a=function(){!v&&s-o<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);o=0,r=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function o(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*i[0].width:i[0].width;var o=1;3!==e&&4!==e||(o=2),5!==e&&6!==e||(o=3),7!==e&&8!==e||(o=4),9!==e&&10!==e||(o=5),a.height=i[0].height*o}else a.width=A.width||360,a.height=A.height||240;t&&t instanceof HTMLVideoElement&&p(t),i.forEach((function(e,t){p(e,t)})),setTimeout(h,A.frameInterval)}}function p(e,t){if(!s){var i=0,o=0,r=e.width,a=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(r=e.stream.width),void 0!==e.stream.height&&(a=e.stream.height),n.drawImage(e,i,o,r,a),"function"==typeof e.stream.onRender&&e.stream.onRender(n,i,o,r,a,t)}}function m(e){var t=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,t),t.className=o,t.muted=!0,t.volume=0,t.width=e.width||A.width||360,t.height=e.height||A.height||240,t.play(),t}function g(e){r=[],(e=e||t).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=m(e);t.stream=e,r.push(t)}}))}void 0!==d?u.AudioContext=d:"undefined"!=typeof webkitAudioContext&&(u.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){h()},this.appendStreams=function(e){if(!e)throw"First parameter is required.";e instanceof Array||(e=[e]),e.forEach((function(e){var i=new l;if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var o=m(e);o.stream=e,r.push(o),i.addTrack(e.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=A.audioContext.createMediaStreamSource(e);A.audioDestination=A.audioContext.createMediaStreamDestination(),s.connect(A.audioDestination),i.addTrack(A.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}t.push(i)}))},this.releaseStreams=function(){r=[],s=!0,A.gainNode&&(A.gainNode.disconnect(),A.gainNode=null),A.audioSources.length&&(A.audioSources.forEach((function(e){e.disconnect()})),A.audioSources=[]),A.audioDestination&&(A.audioDestination.disconnect(),A.audioDestination=null),A.audioContext&&A.audioContext.close(),A.audioContext=null,n.clearRect(0,0,a.width,a.height),a.stream&&(a.stream.stop(),a.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),g(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var e=function(){var e;g(),"captureStream"in a?e=a.captureStream():"mozCaptureStream"in a?e=a.mozCaptureStream():A.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new l;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),a.stream=t,t}(),i=function(){u.AudioContextConstructor||(u.AudioContextConstructor=new u.AudioContext);A.audioContext=u.AudioContextConstructor,A.audioSources=[],!0===A.useGainNode&&(A.gainNode=A.audioContext.createGain(),A.gainNode.connect(A.audioContext.destination),A.gainNode.gain.value=0);var e=0;if(t.forEach((function(t){if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){e++;var i=A.audioContext.createMediaStreamSource(t);!0===A.useGainNode&&i.connect(A.gainNode),A.audioSources.push(i)}})),!e)return;return A.audioDestination=A.audioContext.createMediaStreamDestination(),A.audioSources.forEach((function(e){e.connect(A.audioDestination)})),A.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(t){e.addTrack(t)})),t.forEach((function(e){e.fullcanvas})),e}}function L(e,t){e=e||[];var i,o,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new j(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){w(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(o=new C(i.getMixedStream(),t)).record()},this.stop=function(e){o&&o.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){o&&o.pause()},this.resume=function(){o&&o.resume()},this.clearRecordedData=function(){o&&(o.clearRecordedData(),o=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),o&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,o,r;function s(){return new ReadableStream({start:function(o){var r=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),o.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==o._controlledReadableStream.state)try{o.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(o=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),o.addEventListener("message",(function(e){"READY"===e.data?(o.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),s().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):o.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){o?(o.addEventListener("message",(function(t){null===t.data&&(o.terminate(),o=null,e&&e())})),o.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}void 0!==i&&(i.DiskStorage=x),void 0!==i&&(i.GifRecorder=D),void 0===i&&(t.exports=j),void 0!==i&&(i.MultiStreamRecorder=L),void 0!==i&&(i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var o=this;o.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{o.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{o.recordRTC.stopRecording((function(i){o.blob=o.recordRTC.getBlob(),o.blob&&o.blob.size?e(i):t("Empty blob.",o.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{o.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{o.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{o.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(o.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(o.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(o.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(o.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(o.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"}),void 0!==i&&(i.WebAssemblyRecorder=F)}));class et extends Me{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||u,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,l!==t&&u!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=$e(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(L.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(L.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(L.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(L.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(L.recordEnd);const e=(this.fileName||we())+"."+(this.fileType||u);Ne(this.recorder.getBlob(),e),this._reset(),this.player.emit(L.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class tt{constructor(e){return new(tt.getLoaderFactory())(e)}static getLoaderFactory(){return et}}class it{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}async destroy(){this.decoderWorker.postMessage({cmd:D}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case m:e.log("decoderWorker","onmessage:",m),this.player.loaded||this.player.emit(L.load),this.player.emit(L.decoderWorkerInit),this._initWork();break;case w:e.log("decoderWorker","onmessage:",w,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=we()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case v:e.log("decoderWorker","onmessage:",v,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case g:if(e.log("decoderWorker","onmessage:",g,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(O.webglAlignmentError);this.player.video.initCanvasViewSize();break;case y:e.log("decoderWorker","onmessage:",y,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case f:this.player.handleRender(),this.player.video.render(i),this.player.emit(L.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=we(),this.player.handlePlayToRenderTimes());break;case b:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case S:i.message&&-1!==i.message.indexOf(E)&&this.player.emitError(O.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:T,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const o={type:C,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:I,buffer:e,options:o},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:B,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:I,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:x,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:j,key:e.key,value:e.value})}}class ot extends Me{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===B&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===B&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,o,r){const s=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===C&&(a.isIFrame=o),this.pushBuffer(e,a)):t===C?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,o):t===B&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===B?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===C&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===B?this.bufferList.push({ts:t.ts,payload:e,type:B}):t.type===C&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:C,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],o=48&i,r=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(r===ue){if(o===me){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,C,0,!0,0)}}}else if(r===he){let i=e,r=0;const s=o===me;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=Oe(e.slice(8),s),this._doDecode(i,C,t,s,r)}}else if(r===pe){const i=o===me;let r=Oe(e.slice(5),i);this._doDecode(r,C,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class rt extends ot{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),o=this.player;for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(r){case R:o._opt.hasAudio&&(o.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,B,a));break;case k:if(o._times.demuxStart||(o._times.demuxStart=we()),o._opt.hasVideo){o.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,C,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return o=>{let r=new Uint8Array(o);if(i){let e=new Uint8Array(i.length+r.length);e.set(i),e.set(r,i.length),r=e,i=null}for(;r.length>=t.value;){let i=r.slice(t.value);t=e.next(r.slice(0,t.value)),r=i}r.length>0&&(i=r)}}close(){this.input&&this.input.return(null)}}class st extends ot{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),r=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(o){case B:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,o,r)}break;case C:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=we()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,r);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,o,r,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class at{constructor(e){return new(at.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===c?st:e===d?rt:void 0}}class nt{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let o=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-o;return this._current_word<<=o,this._current_word_bits_left-=o,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class At{static _ebsp2rbsp(e){let t=e,i=t.byteLength,o=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(o[r]=t[e],r++);return new Uint8Array(o.buffer,0,r)}static parseSPS(e){let t=At._ebsp2rbsp(e),i=new nt(t);i.readByte();let o=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=At.getProfileString(o),a=At.getLevelString(r),n=1,A=420,d=[0,420,422,444],c=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:At.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,o=8,r=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(O.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?K:_});this.player.emit(L.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(o)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(ne)||-1!==e.toString().indexOf(Ae))&&this.player.emitError(O.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===P)return void this.emit(O.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=we());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let o=t[e].toString(16);o.length<2&&(o="0"+o),i+=o}return{codec:i,description:e}}(e.slice(5));this.player.debug.log("Webcodecs","VideoDecoder configure",i);try{this.decoder.configure(i)}catch(e){return this.player.debug.error("Webcodecs","VideoDecoder configure",e),void this.player.emit(O.webcodecsConfigureError)}this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const lt={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var ut=Object.keys(lt).reduce(((e,t)=>(e[t]=`\n \n ${lt[t]?`${lt[t]}`:""}\n`,e)),{}),ht=(e,t)=>{const{events:{proxy:i}}=e,o=document.createElement("object");o.setAttribute("aria-hidden","true"),o.setAttribute("tabindex",-1),o.type="text/html",o.data="about:blank",Ee(o,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,s=e.height;i(o,"load",(()=>{i(o.contentDocument.defaultView,"resize",(()=>{e.width===r&&e.height===s||(r=e.width,s=e.height,e.emit(L.resize),n())}))})),e.$container.appendChild(o),e.on(L.destroy,(()=>{e.$container.removeChild(o)})),e.on(L.volumechange,(()=>{!function(e){if(0===e)Ee(t.$volumeOn,"display","none"),Ee(t.$volumeOff,"display","flex"),Ee(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=Be(t.$volumePanel,"height")||60,o=Be(t.$volumeHandle,"height"),r=i-(i-o)*e-o;Ee(t.$volumeHandle,"top",`${r}px`),Ee(t.$volumeOn,"display","flex"),Ee(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(L.loading,(e=>{Ee(t.$loading,"display",e?"flex":"none"),Ee(t.$poster,"display","none"),e&&Ee(t.$playBig,"display","none")}));const a=i=>{let o=xe(i)?i:e.fullscreen;Ee(t.$fullscreenExit,"display",o?"flex":"none"),Ee(t.$fullscreen,"display",o?"none":"flex")},n=()=>{ke()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,o=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${o}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{be.on("change",a),e.events.destroys.push((()=>{be.off("change",a)}))}catch(e){}e.on(L.webFullscreen,(e=>{a(e),n()})),e.on(L.recording,(()=>{Ee(t.$record,"display",e.recording?"none":"flex"),Ee(t.$recordStop,"display",e.recording?"flex":"none"),Ee(t.$recording,"display",e.recording?"flex":"none"),!e.recording&&t.$recordingTime&&(t.$recordingTime.innerHTML=je(0))})),e.on(L.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=je(e))})),e.on(L.playing,(e=>{Ee(t.$play,"display",e?"none":"flex"),Ee(t.$playBig,"display",e?"none":"block"),Ee(t.$pause,"display",e?"flex":"none"),Ee(t.$screenshot,"display",e?"flex":"none"),Ee(t.$record,"display",e?"flex":"none"),Ee(t.$qualityMenu,"display",e?"flex":"none"),Ee(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=Te(""))})),e.on(L.kBps,(e=>{const i=Te(e);t.$speed&&(t.$speed.innerHTML=i)}))};function pt(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}pt('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;user-select:none}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHsUlEQVRoQ+2Z969VVRCFv7H33nvvvfcSe2+xxJgY4z9j/Bs0/mABFQXBhl1sgNjQSCyoiL2BDaxs873MJsfDuZd7gfeQxJ3cvAfv3HP22rNmzZo5wRq+Yg3fP/8DWN0RXCYCpZSzgM2Br4GPgW8j4s9hNlpKWQfYETgUOB44GtgMmA1MBF4BFkdEGea+Xdd2AbgF2B2YD0wHZkbEZ4M+qJSyIbArcARwMnAUsC/wO/AscCfwQkT8Meg9+13XBeBx4EjgZ+ClPLGXI+KbfjcqpXivLYA9gWOA0/PnDsDGwOeA977bCAwb1V7P7gIwDpBG2wJfAg/nZ3oXiFLK2sD6ef0+uWlp48kbSddfwAfAVOB+YNZoRuBG4CLgbGDLpNLTwIPAjDaIUsomwM7A4cCJyfm9ga0Bwbn+Bt4fKwDyV+5eAZyayWgkHgGmmBdNEKUUk/U44DzgNGA/YN1WyBWBucATwH3Aq6MZgbXyRAVxMXABsFUrEi9GxILkvbQ5JwGfABiR9ho7APXJpRSTzxO9CjgF2ClBPJrJ+JYSm/Io2Mvyeq+r1Km3G3sAPrmUsktu3pyQItskiFkpiS8CnybfBXl+5sBu8K8qP3YASik+/DdgEaBWbw+cCVwHnJRF7gd5nJEwwT9JmglC2hmRZiRUoQ8HzYFSynrABhk+C17PQtolozcBC/Kklb7FwCHANbk5f3d5zZuAlDI5rdoqj/pvxMwHBaHKaE3ie5eXxKWU7QCjb6WeHxHfDVMH1GlV521AinyUSnR5Jqr6XhP1JzUdeKwBQpqdkSBUMf+tMAjA68YPAOBA4FhgSToBJbhzdUVADyQlrMKTgdfyZJVVE1qLYGWta2FGQpm1UPldT1AQl2ZhE4R2xGgZAetJT1qUUoyeVDQCUyJi5jAA/JJlX99iNF7OgnYl4EcKbdS64Y8JtNJpXoKwGJrYFjm9kPliBDRznq4GT+No3ZCqHoY/zaVr8xnjI+KFYQEojz7M05JGPsQICOCwVgTakdB6mBOCsEIrxdWamDMT0iSapAcBB+T99Vq6Vb8nTQWgqx23IgCMwDONCAhAOghAo9dVrARSI1Hp5H1UMUG4WekpODcqrQQm1aw5ioDfU920Ih6YHuuBiJAFA+fASOY3ABhuXeYljRzYtNcNkwavZ/4YRblvJExM5dTN+38aPTfpx9/nAHdlHgnI52nNJ0WEtn4oAIax5oBfHgaAD5LLJp72WRDSoyb+91ln9s8Dsb5owd8Bbk/gyrFSbK49FBEzxhpAs05IC/NIGbXH0JnKbQFIyeuBvRLAbW44VW+1A2jmxJMZjXd1odlD7JER0L7bsRkBAeh4zQ9ltEZgzCnUjLh0MicmJZ0+TBD2Gkbg5pTm94A7snmSQv8ZAIKR956iEjs1IlQczaJ14obsJ7xGibV4mnOVQpNXRxJ35Zx+Zhpwj5GIiIWlFOVSo6j5ky4WLBNflTMCqtBqS+IuEMqnfshEVe91vUqsYxddsImubJsDyqjFTgBD54AevymjtZDphbQF/epAnxIxYh+sMc9nsiqPUse2VOeqOZRednk2SNrqiREhqKHqwFdZyOxfNXUC0I0KwGFVr0rc6zkWMM2bG7Jbsy6oTEZC2pjo0sUiah/iWObqdLH3R4QyPBQA7fRz2YBXANWNCqBt5vqdun/7NTepadOpujykOu2QItoMI+RyuuFh6ZYnDGslPAHD7Mk4BvTmypoAPBXNXHvqsDwAUsND8aQtYvJeu2Ak9EZq/7SIEJTqdHCOdewjTHjtx8AReCP7XBsVT8gC45BLWfNUmg3N8jZe/24E5Lb38nAEoPrIfYE9VaOd0w6jZHGTbh9EhNcMDODWDKeKIPIvsh/Qo1+Ykqf5ks+DLtXG++lwjazfdRRzbgOENcIaYGLrar1GN/prRPj9gQHIP2lkuNVuGwzlzBOxU7LntSvTCph4gyyHAwLQF1mRPVGpaERteOq0w0hI26UTQGdP/abYXS2lmzWZlkSE6iEnvc7S76alkP2q2q2LtGrK1X6rjlWsATZJWguHZfYCqlvtCeoE0Eg4AbSx6rsGfkNTSnGTqo+8tYsyUsqdPt+mpV9iVwBWWVvEEXuccyersEWrTgAtdkZipHOLCOtEzzUwgHqHdJImtRs3Cs5F7bYsRBa4rnu2B1uO10ckszE8U+Xs3FSnnrPYNpKhATQoZUNu+bcyGwk/5ong2vdtA5DjTXqqSnUo1o5E51S8AlkhAI1oSBsfrm6b4OaGvyuDTZUSQHMyt8z7gVYk6lTc4uaoRoXSTiyMiF+aUVgpABkNtdpCZ16Y4OaGUbHLqnkxCABzzHFkOxLSyeT31dTciLCOLF0rDaARDVVKVXJq4Rsac0PV0ke57LOVUe207906B1sZCXPBnDDHlGpP325tTu0lVgmF2glVSlGlPEUT3Eg4DFbvBVdfVzl56PmOLNXOg/D7RtQa4YxW8PPaqrTKItBSKR8qCLksJWzgLWbaaOvASxFhgexcpRQrsAehSCgWTsOdj/7YfrOzygE0gFjgfN0kDaSVUbAaa6N9xaTB67nyXbP0UQxUrEVdtBtNACa3Rc9ISCOLne5Tdzt7eQBSIEzsukedwTIvxkcNQL/TXZV/W+MB/AMANfVPjBGemwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class mt{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,o=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${ut.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&o.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${ut.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${o.audio?`\n
\n ${ut.audio}\n ${ut.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${o.play?`
${ut.play}
${ut.pause}
`:""}\n ${o.screenshot?`
${ut.screenshot}
`:""}\n ${o.record?`
${ut.record}
${ut.recordStop}
`:""}\n ${o.fullscreen?`
${ut.fullscreen}
${ut.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),ht(e,this),((e,t)=>{const{events:{proxy:i},debug:o}=e;function r(e){const{bottom:i,height:o}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return Se(i-e.y-r/2,0,o-r/2)/(o-r)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),Ee(t.$volumeOn,"display","none"),Ee(t.$volumeOff,"display","block");const o=e.volume;e.volume=0,e._lastVolume=o})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),Ee(t.$volumeOn,"display","block"),Ee(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=r(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=r(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(Ee(t.$controls,"display","block"),r())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(Ee(t.$controls,"display","block"),r()))})),i(e.$container,"mouseout",(()=>{s(),Ee(t.$controls,"display","none")}));let o=null;const r=()=>{s(),o=setTimeout((()=>{Ee(t.$controls,"display","none")}),5e3)},s=()=>{o&&(clearTimeout(o),o=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,o={};function r(e,t){o[e]?o[e].push(t):o[e]=[t]}r(re,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(se,(()=>{e.volume+=.05})),r(ae,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=o[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Fe(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Fe(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Fe(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Fe(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Fe(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.$container&&(this.player.$container.classList.remove("jessibuca-controls-show-auto-hide"),this.player.$container.classList.remove("jessibuca-controls-show")),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,o=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(o>r){const o=(t-i*r)/2;e.$container.style.padding=`0 ${o}px`}else{const o=(i-t/r)/2;e.$container.style.padding=`${o}px 0`}}toggleBar(e){this.$controls&&(xe(e)||(e="none"===Be(this.$controls,"display",!1)),Ee(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==Be(this.$controls,"display",!1)),e}}pt(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class gt{static init(){gt.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in gt.types)gt.types.hasOwnProperty(e)&&(gt.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=gt.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,o=Array.prototype.slice.call(arguments,1),r=o.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return gt.box(gt.types.trak,gt.tkhd(e),gt.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,r=e.presentHeight;return gt.box(gt.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,o>>>8&255,255&o,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return gt.box(gt.types.mdia,gt.mdhd(e),gt.hdlr(e),gt.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return gt.box(gt.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?gt.constants.HDLR_AUDIO:gt.constants.HDLR_VIDEO,gt.box(gt.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?gt.box(gt.types.smhd,gt.constants.SMHD):gt.box(gt.types.vmhd,gt.constants.VMHD),gt.box(gt.types.minf,t,gt.dinf(),gt.stbl(e))}static dinf(){return gt.box(gt.types.dinf,gt.box(gt.types.dref,gt.constants.DREF))}static stbl(e){return gt.box(gt.types.stbl,gt.stsd(e),gt.box(gt.types.stts,gt.constants.STTS),gt.box(gt.types.stsc,gt.constants.STSC),gt.box(gt.types.stsz,gt.constants.STSZ),gt.box(gt.types.stco,gt.constants.STCO))}static stsd(e){return"audio"===e.type?gt.box(gt.types.stsd,gt.constants.STSD_PREFIX,gt.mp4a(e)):"avc"===e.videoType?gt.box(gt.types.stsd,gt.constants.STSD_PREFIX,gt.avc1(e)):gt.box(gt.types.stsd,gt.constants.STSD_PREFIX,gt.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return gt.box(gt.types.mp4a,o,gt.esds(e))}static esds(e){let t=e.config||[],i=t.length,o=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return gt.box(gt.types.esds,o)}static avc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return gt.box(gt.types.avc1,r,gt.box(gt.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return gt.box(gt.types.hvc1,r,gt.box(gt.types.hvcC,t))}static mvex(e){return gt.box(gt.types.mvex,gt.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return gt.box(gt.types.trex,i)}static moof(e,t){return gt.box(gt.types.moof,gt.mfhd(e.sequenceNumber),gt.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return gt.box(gt.types.mfhd,t)}static traf(e,t){let i=e.id,o=gt.box(gt.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=gt.box(gt.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=gt.sdtp(e),a=gt.trun(e,s.byteLength+16+16+8+16+8+8);return gt.box(gt.types.traf,o,r,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,gt.box(gt.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let o=e.duration,r=e.size,s=e.flags,a=e.cts;return i.set([o>>>24&255,o>>>16&255,o>>>8&255,255&o,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),gt.box(gt.types.trun,i)}static mdat(e){return gt.box(gt.types.mdat,e)}}gt.init();class ft extends Me{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(L.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(L.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===te}get isStateClosed(){return this.state===ie}get isStateEnded(){return this.state===ee}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,o){const r=this.player;if(r)if(this.hasInit){if(i&&0===e[1]){let t=dt(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const r=t-this.firstRenderTime;this._decodeVideo(e,r,i,o)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const o=15&e[0];if(r.video.updateVideoInfo({encTypeCode:o}),o===P)return void this.emit(O.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=we()),this._decodeConfigurationRecord(e,t,i,o),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,o){let r=e.slice(5),s={};s=dt(r);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=gt.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,o){const r=this.player;let s=e.slice(5),a=s.byteLength;const n=r.video.$videoElement,A=r._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(gt.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let o=gt.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(o.byteLength+i.byteLength);s.set(o,0),s.set(i,o.byteLength),this.appendBuffer(s.buffer),r.handleRender(),r.updateStats({fps:!0,ts:t,buf:r.demux&&r.demux.delay||0}),r._times.videoStart||(r._times.videoStart=we(),r.handlePlayToRenderTimes())}else r.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=o,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(r.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(r.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),r.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),r.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer($),i(this.sourceBuffer,"error",(e=>{t.error("MediaSource","sourceBuffer error",e),this.player.emit(L.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(O.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(O.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(L.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(O.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(O.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(L.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const bt=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,yt=()=>"wakeLock"in navigator;class vt{constructor(e){if(this.player=e,this.enabled=!1,yt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else bt()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var o=document.createElement("source");o.src=i,o.type=`video/${t}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(yt())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(bt())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;yt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):bt()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class wt extends Me{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},p,t),this.debug=new ge(this),this.debug.log("Player","init"),this._opt.forceNoOffscreen=!0,(ke()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))&&(this.debug.log("Player","isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),be.isEnabled&&this._opt.useWebFullScreen&&(this.debug.log("Player","screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Ve(be.isEnabled)&&Ve(this._opt.useWebFullScreen)&&(this.debug.log("Player","screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported($)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new fe(this),this.video=new Ye(this),this._opt.hasAudio&&(this.audio=new qe(this)),this.recorder=new tt(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new it(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new ct(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new ft(this),this.loaded=!0),this.control=new mt(this),ke()&&(this.keepScreenOn=new vt(this)),(e=>{try{const t=t=>{Le(t)===e.$container&&(e.emit(F.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};be.on("change",t),e.events.destroys.push((()=>{be.off("change",t)}))}catch(e){}if(e.on(L.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(L.play,(()=>{e.loading=!1})),e.on(L.fullscreen,(t=>{if(t)try{be.request(e.$container).then((()=>{})).catch((t=>{ke()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ke()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{be.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),ke()&&e.on(L.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(F.fullscreen,e.fullscreen)})),e.on(L.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[L.timeUpdate],i=[L.stats,L.playToRenderTimes,L.audioInfo,L.videoInfo];Object.keys(L).forEach((o=>{e.on(L[o],(r=>{t.includes(o)||(i.includes(o)&&(r=JSON.stringify(r)),e.debug.log("player events",L[o],r))}))})),Object.keys(O).forEach((t=>{e.on(O[t],(i=>{e.debug.log("player event error",O[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(t=>{const i=Le(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),o(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),o(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen");try{this.debug.log("Player options",JSON.stringify(this._opt))}catch(e){}}async destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){ke()&&this._opt.useWebFullScreen?(this.emit(L.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(L.fullscreen,e)}get fullscreen(){return be.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(L.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(L.playing,e),this.emit(L.volumechange,this.volume),e?this.emit(L.play):this.emit(L.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(L.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(L.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new _e(this)),this.audio||this._opt.hasAudio&&(this.audio=new qe(this)),this.demux||(this.demux=new at(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new ct(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new ft(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new it(this),this.debug.log("Player","waiting decoderWorker init"),this.once(L.decoderWorkerInit,(()=>{this.debug.log("Player","decoderWorker init success"),e()})))}))}play(e,t){return new Promise(((i,o)=>{if(!e&&!this._opt.url)return o();this.loading=!0,this.playing=!1,this._times.playInitStart=we(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=we(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(O.webcodecsH265NotSupport,(()=>{this.emit(O.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(L.error,O.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(O.mediaSourceH265NotSupport,(()=>{this.emit(O.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(L.error,O.mediaSourceH265NotSupport)})),this.mseDecoder.once(O.mediaSourceFull,(()=>{this.emitError(O.mediaSourceFull)})),this.mseDecoder.once(O.mediaSourceAppendBufferError,(()=>{this.emitError(O.mediaSourceAppendBufferError)})),this.mseDecoder.once(O.mediaSourceBufferListLarge,(()=>{this.emitError(O.mediaSourceBufferListLarge)})),this.mseDecoder.once(O.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(O.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(O.fetchError,(e=>{this.emitError(O.fetchError,e)})),this.stream.once(O.websocketError,(e=>{this.emitError(O.websocketError,e)})),this.stream.once(L.streamEnd,(e=>{this.emitError(L.streamEnd,e)})),this.stream.once(L.streamSuccess,(()=>{i(),this._times.streamResponse=we(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{o(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(e=!1){return e?this.close():this._close()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(L.timeout,L.delayTimeout),this.emit(L.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(L.timeout,L.loadingTimeout),this.emit(L.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(L.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=we()),De(e.ts)&&(this._stats.ts=e.ts),De(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=we();t-this._startBpsTime<1e3||(this.emit(L.stats,this._stats),this.emit(L.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(L.playToRenderTimes,e)}getOption(){return this._opt}emitError(e,t=""){this.emit(L.error,e,t),this.emit(e,t)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class St extends Me{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);if(this._checkHasCreated(i))throw new Error("Jessibuca container has been created and can not be created again",i);if(t.videoBuffer>10&&console.warn("Jessibuca",`videoBuffer ${t.videoBuffer}s is too long, will black screen for ${t.videoBuffer}s , it is recommended to set it to less than 10s`),!i.classList)throw new Error("Jessibuca container option must be DOM Element");var o,r,s;i.classList.add("jessibuca-container"),o=i,r=h,s="xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),o&&(o.dataset?o.dataset[r]=s:o.setAttribute("data-"+r,s)),delete t.container,t.forceNoOffscreen=!0,ke()&&(t.controlAutoHide=!1),De(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),De(t.timeout)&&(Ie(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Ie(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._destroyed=!1,this.events=new fe(this),this.debug=new ge(this),this._initPlayer(i,t)}async destroy(){var e,t;this._destroyed=!0,this.events&&(this.events.destroy(),this.events=null),this.player&&(await this.player.destroy(),this.player=null),this.$container&&(this.$container.classList.remove("jessibuca-container"),this.$container.classList.remove("jessibuca-fullscreen-web"),e=this.$container,t=h,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._opt=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.off()}_initPlayer(e,t){this.player=new wt(e,t);try{this.debug.log("jessibuca","_initPlayer",JSON.stringify(this.player.getOption()))}catch(e){}this._bindEvents()}_resetPlayer(e={}){this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(F).forEach((e=>{this.player.on(F[e],(t=>{this.emit(e,t)}))}))}isDestroyed(){return this._destroyed}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case H:t.isFullResize=!1,t.isResize=!1;break;case z:t.isFullResize=!1,t.isResize=!0;break;case Y:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}async close(){return await this.destroy(),!0}clearView(){this.player.video.clearView()}play(e,t={}){return new Promise(((i,o)=>{if(!e&&!this._opt.url)return this.emit(L.error,O.playError),void o("play url is empty");e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{o(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),o(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),o(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),o(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{o(e)}))}))}))}_play(e,t={}){return new Promise(((i,o)=>{this._opt.url=e,this._opt.playOptions=t;const r=0===e.indexOf("http"),s=r?A:n,a=r||-1!==e.indexOf(".flv")||this._opt.isFlv?d:c;this.player.updateOption({protocol:s,demuxType:a}),this.player.once(O.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(O.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","media source h265 not support and paused")}))})),this.player.once(O.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(O.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(O.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(O.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(O.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","mse source buffer error and paused")}))})),this.player.once(O.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","webcodecs h265 not support and paused")}))})),this.player.once(O.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(O.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs decode error and paused")}))})),this.player.once(O.webcodecsConfigureError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs Configure error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Configure error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Configure error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs Configure error and paused")}))})),this.player.once(O.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay?this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))})):this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and paused")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and paused error",e)}))})),this.player.once(O.fetchError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","fetch error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","fetch error and pause play error",e)}))})),this.player.once(O.websocketError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","websocket Error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","websocket Error and pause play error",e)}))})),this.player.once(L.streamEnd,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","stream End and pause play")})).catch((e=>{this.debug.warn("Jessibuca","stream End and pause play error",e)}))})),this.player.on(L.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(L.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{o(e)}))})):this.player.once(L.decoderWorkerInit,(()=>{this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{o(e)}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,o){return this.player.video?this.player.video.screenshot(e,t,i,o):""}startRecord(e,t){return new Promise(((i,o)=>{this.player.playing?(this.player.startRecord(e,t),i()):o()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,h);return!!t}toggleControlBar(e){this.isDestroyed()||this.player&&this.player.toggleControlBar(e)}getControlBarShow(){if(this.isDestroyed())return!1;let e=!1;return this.player&&(e=this.player.getControlBarShow()),e}}return a(St,"ERROR",O),a(St,"TIMEOUT",{loadingTimeout:L.loadingTimeout,delayTimeout:L.delayTimeout}),window.Jessibuca=St,St})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var i,r=t((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),o=(i=r)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l="jessibuca",u='"3.2.6"',h={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!0,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1},p="init",g="initVideo",m="render",f="playAudio",b="initAudio",y="audioCode",v="videoCode",w="wasmError",S="Invalid NAL unit size",E=1,B=2,C=8,R=9,k="init",T="decode",I="audioDecode",x="close",D="updateConfig",j={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",volume:"volume",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},L={load:j.load,timeUpdate:j.timeUpdate,videoInfo:j.videoInfo,audioInfo:j.audioInfo,error:j.error,kBps:j.kBps,log:j.log,start:j.start,timeout:j.timeout,loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout,fullscreen:"fullscreen",webFullscreen:j.webFullscreen,play:j.play,pause:j.pause,mute:j.mute,stats:j.stats,volumechange:j.volumechange,performance:j.performance,recordingTimestamp:j.recordingTimestamp,recordStart:j.recordStart,recordEnd:j.recordEnd,playToRenderTimes:j.playToRenderTimes,volume:j.volume},F={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsConfigureError:"webcodecsConfigureError",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:j.mseSourceBufferFull,mseSourceBufferError:j.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},O="notConnect",V="open",M="close",U="error",Q={download:"download",base64:"base64",blob:"blob"},W={7:"H264(AVC)",12:"H265(HEVC)"},J=12,P={10:"AAC",7:"ALAW",8:"MULAW"},G=38,N=0,H=1,z=2,Y="webcodecs",X="webgl",q="offscreen",Z="key",K="delta",_='video/mp4; codecs="avc1.64002A"',$="ended",ee="open",te="closed",ie=1e3,re=27,oe=38,se=40,ae="A key frame is required after configure() or flush()",ne="Cannot call 'decode' on a closed codec",Ae="The user aborted a request",de="AbortError",ce="AbortError",le=0,ue=1,he=3,pe=16;class ge{constructor(e){this.log=function(t){if(e._opt&&e._opt.debug){for(var i=arguments.length,r=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o1?t-1:0),r=1;r3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const o=()=>e.removeEventListener(t,i,r);return this.destroys.push(o),o}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var fe=t((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,o=i.length,s={};r0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),r=t[0].replace("data:","").replace(";base64","");let o=i.length,s=new Uint8Array(o);for(;o--;)s[o]=i.charCodeAt(o);return new File([s],"file",{type:r})}function ve(){return(new Date).getTime()}function we(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function Se(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{Se(e,i,t[i])})),e.style[t]=i,e}function Ee(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function Be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ce(e){let t=0,i=Be();return r=>{t+=r;const o=Be(),s=o-i;s>=1e3&&(e(t/s*1e3),i=o,t=0)}}function Re(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ke(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Te(e){return null==e}function Ie(e){return!0===e||!1===e}function xe(e){return!Te(e)}function De(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,o=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(o=Math.round(o))<10&&(t+="0"),t+=o.toFixed(0)}return t}function je(e){const t=e||window.event;return t.target||t.srcElement}function Le(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function Fe(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Oe(e){return!0!==e&&"true"!==e}fe.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class Ve{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function o(){r.off(e,o);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const r=i[e],o=[];if(r&&t)for(let e=0,i=r.length;e=200&&t.status<=299}function Je(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Pe=Ue.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ge="object"!=typeof window||window!==Ue?function(){}:"download"in HTMLAnchorElement.prototype&&!Pe?function(e,t,i){var r=Ue.URL||Ue.webkitURL,o=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",o.download=t,o.rel="noopener","string"==typeof e?(o.href=e,o.origin!==location.origin?We(o.href)?Qe(e,t,i):Je(o,o.target="_blank"):Je(o)):(o.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(o.href)}),4e4),setTimeout((function(){Je(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(We(e))Qe(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Je(r)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof e)return Qe(e,t,i);var o="application/octet-stream"===e.type,s=/constructor/i.test(Ue.HTMLElement)||Ue.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&s||Pe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},n.readAsDataURL(e)}else{var A=Ue.URL||Ue.webkitURL,d=A.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class Ne extends Me{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let r=0;for(;!t&&r{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,o),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),r}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,r,o,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Y,this._initContext2D()):this._supportOffscreen()?(this.renderType=q,this._bindOffscreen()):(this.renderType=X,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case q:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case X:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case Y:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(o[t]||o.png,s);if(r===Q.base64)return a;{const t=ye(a);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}clearView(){switch(this.renderType){case q:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case X:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Y:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&e.useWebFullScreen?t-=G:i-=G);let r=this.$videoElement.width,o=this.$videoElement.height;const s=e.rotate;let a=(t-r)/2,n=(i-o)/2;270!==s&&90!==s||(r=this.$videoElement.height,o=this.$videoElement.width);const A=t/r,d=i/o;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class He extends Me{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.disablePictureInPicture=!0,function(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const r=this.player._opt;r.useWCS&&r.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&(this.player.debug.log("Video","canplay and _delayPlay is true and next play()"),this._play())})),o(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(j.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}async destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let r in i)if(i[r]){let i="";if("IE"===r)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===r){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(r="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===r?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===r?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===r?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===r?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===r&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=r,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(o[t]||o.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===Q.base64)return A;{const t=ye(A);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&i.useWebFullScreen?e-=G:t-=G),this.$videoElement.width=e,this.$videoElement.height=t,270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e);let o=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+r+"deg)",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class ze{constructor(e){return new(ze.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?He:Ne}}class Ye extends Ve{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(j.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}async destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=be,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this._prevVolume=null,this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=P[e.encTypeCode],this.audioInfo.encTypeCode=e.encTypeCode),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(j.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ie)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let r=0;r0?this.player.emit(j.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(j.mute,!0),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(j.volumechange,this.player.volume),this.player.emit(j.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){this.isMute||(this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t}),this.bufferList.length>20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}}class Xe{constructor(e){return new(Xe.getLoaderFactory())(e)}static getLoaderFactory(){return Ye}}class qe extends Ve{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}async destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=ve();const r=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,r).then((e=>{const t=e.body.getReader();this.emit(j.streamSuccess);const r=()=>{t.read().then((e=>{let{done:t,value:o}=e;t?i.close():(this.streamRate&&this.streamRate(o.byteLength),i.dispatch(o),r())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(Ae)&&-1===t.indexOf(de)&&e.name!==ce&&(this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))};r()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ze extends Ve{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=O,this.wsUrl=null,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}async destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=O,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(j.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=V})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(j.streamEnd),this.socketStatus=M})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(F.websocketError,e),this.player.emit(j.error,F.websocketError),this.socketStatus=U,r.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=ve(),this.wsUrl=e,this._createWebSocket()}}class Ke{constructor(e){return new(Ke.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?qe:e===s?Ze:void 0}}var _e=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new r(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var r=new o(e,t);(h=new r(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else g();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var r=h.blob;if(!r){if(!i)throw"Recording failed.";h.blob=r=i}if(r&&!t.disableLogs&&console.log(r.type,"->",b(r.size)),e){var o;try{o=l.createObjectURL(r)}catch(e){}"function"==typeof e.call?e.call(s,o):e(o)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var r=i?i.blob:(h||{}).blob;if(!r)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var o=new FileReader;o.readAsDataURL(r),o.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(r)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function g(){!0!==t.disableLogs&&console.warn(p)}var m={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new r(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):g()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):g()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):g()},getBlob:function(){if(h)return h.blob;g()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);g()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):g()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):g()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,r=0;r-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),g=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),m=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);m&&!g&&-1!==navigator.userAgent.indexOf("CriOS")&&(m=!1,g=!0);var f=window.MediaStream;function b(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function y(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var r=t.split(".");t=r[0],i=r[1]}var o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=o,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),i.invokeSaveAsDialog=y,i.getTracks=w,i.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,r=new EBML.Decoder,o=EBML.tools,s=new FileReader;s.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||m||u)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(g||h)&&(e=i.indexOf("Chrome"),r=i.substring(e+7)),-1!==(t=r.indexOf(";"))&&(r=r.substring(0,t)),-1!==(t=r.indexOf(" "))&&(r=r.substring(0,t)),o=parseInt(""+r,10),isNaN(o)&&(r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=49}function C(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var r;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(r=new f).addTrack(w(e,"audio")[0]):r=new f(w(e,"audio")),e=r;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=g?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var o,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){s=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),o&&(o=null),g&&!B()&&(r="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&r.mimeType&&(MediaRecorder.isTypeSupported(r.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType),r.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{o=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){o=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),o.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)});t.ondataavailable(o)}},o.onstart=function(){d.push("started")},o.onpause=function(){d.push("paused")},o.onresume=function(){d.push("resumed")},o.onstop=function(){d.push("stopped")},o.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",r.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(a(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(o&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(r,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var r,o=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),o=[],s=Number((e.length-1)/(r-1));o[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,o.leftchannel=s,o.rightchannel=a,o.numberOfAudioChannels=d,o.desiredSampRate=c,o.sampleRate=b,o.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),g&&(g.disconnect(),g=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;r.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,o.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else g&&(g.disconnect(),g=null)},p.createMediaStreamDestination?r.connect(p.createMediaStreamDestination()):r.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,o.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var r=new Blob([i],{type:"audio/wav"});t.ondataavailable(r),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var r,o,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)r=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";r=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(s=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in r?e=r.captureStream(25):"mozCaptureStream"in r?e=r.mozCaptureStream(25):"webkitCaptureStream"in r&&(e=r.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var r=h.frames.length;h.frames.forEach((function(e,i){var o=r-i;t.disableLogs||console.log(o+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,r);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var r=this;i&&o?o.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),r.blob=i,r.blob.forEach&&(r.blob=new Blob([],{type:"video/webm"})),e&&e(r.blob),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(r=document.createElement("canvas"),o=r.getContext("2d"),r.width=e.width,r.height=e.height,o.drawImage(e,0,0),r),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var r,o;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,o instanceof C&&o.pause()},this.resume=function(){d=!1,o instanceof C?o.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,o){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,g=0,m=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=r&&r>=0&&r<=1?r:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var r,o,s,a=function(){!v&&s-r<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);r=0,o=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function r(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*s[0].width:s[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),o.height=s[0].height*n}else o.width=a.width||360,o.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!r){var i=0,o=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,o,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,o,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var r=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),r.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),r.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(r)}))},this.releaseStreams=function(){i=[],r=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),p(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){r=!1;var t=function(){var e;p(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function L(e,t){e=e||[];var i,r,o=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var o;i=new j(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){w(e,"video").forEach((function(e){o.push(e)}))})),o).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(r=new C(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){o.blob=t,e(t),o.clearRecordedData()}))},this.pause=function(){r&&r.pause()},this.resume=function(){r&&r.resume()},this.clearRecordedData=function(){r&&(r.clearRecordedData(),r=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),r&&i&&(i.appendStreams(o),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,r,o;function s(){return new ReadableStream({start:function(r){var o=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),r.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(r=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),r.addEventListener("message",(function(e){"READY"===e.data?(r.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),s().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):r.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(o||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],o=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){r?(r.addEventListener("message",(function(t){null===t.data&&(r.terminate(),r=null,e&&e())})),r.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],o=!1,this.blob=null},this.blob=null}i.DiskStorage=x,i.GifRecorder=D,i.MultiStreamRecorder=L,i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var r=this;r.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{r.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{r.recordRTC.stopRecording((function(i){r.blob=r.recordRTC.getBlob(),r.blob&&r.blob.size?e(i):t("Empty blob.",r.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{r.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{r.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{r.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(r.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(r.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(r.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(r.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(r.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},i.WebAssemblyRecorder=F}));class $e extends Ve{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=_e(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(j.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(j.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(j.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(j.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(j.recordEnd);const e=(this.fileName||ve())+"."+(this.fileType||c);Ge(this.recorder.getBlob(),e),this._reset(),this.player.emit(j.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class et{constructor(e){return new(et.getLoaderFactory())(e)}static getLoaderFactory(){return $e}}class tt{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}async destroy(){this.decoderWorker.postMessage({cmd:x}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case p:e.log("decoderWorker","onmessage:",p),this.player.loaded||this.player.emit(j.load),this.player.emit(j.decoderWorkerInit),this._initWork();break;case v:e.log("decoderWorker","onmessage:",v,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=ve()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case y:e.log("decoderWorker","onmessage:",y,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case g:if(e.log("decoderWorker","onmessage:",g,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(F.webglAlignmentError);this.player.video.initCanvasViewSize();break;case b:e.log("decoderWorker","onmessage:",b,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case m:this.player.handleRender(),this.player.video.render(i),this.player.emit(j.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=ve(),this.player.handlePlayToRenderTimes());break;case f:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case w:i.message&&-1!==i.message.indexOf(S)&&this.player.emitError(F.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:k,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const r={type:B,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:T,buffer:e,options:r},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:E,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:T,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:I,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:D,key:e.key,value:e.value})}}class it extends Ve{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,r,o){const s=this.player;let a={ts:i,cts:o,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===B&&(a.isIFrame=r),this.pushBuffer(e,a)):t===B?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,r):t===E&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;e.type===E?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===B&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===E?this.bufferList.push({ts:t.ts,payload:e,type:E}):t.type===B&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:B,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,o=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(o===le){if(r===pe){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,B,0,!0,0)}}}else if(o===ue){let i=e,o=0;const s=r===pe;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,o=n[0];i=Fe(e.slice(8),s),this._doDecode(i,B,t,s,o)}}else if(o===he){const i=r===pe;let o=Fe(e.slice(5),i);this._doDecode(o,B,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class rt extends it{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),r=this.player;for(;;){t[3]=0;const e=yield 15,o=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(o){case C:r._opt.hasAudio&&(r.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,E,a));break;case R:if(r._times.demuxStart||(r._times.demuxStart=ve()),r._opt.hasVideo){r.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,B,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return r=>{let o=new Uint8Array(r);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}}class ot extends it{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),o=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case E:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,o)}break;case B:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=ve()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,o);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,r,o,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class st{constructor(e){return new(st.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?ot:e===n?rt:void 0}}class at{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),o=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class nt{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[o]=t[e],o++);return new Uint8Array(r.buffer,0,o)}static parseSPS(e){let t=nt._ebsp2rbsp(e),i=new at(t);i.readByte();let r=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let s=nt.getProfileString(r),a=nt.getLevelString(o),n=1,A=420,d=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=r[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-g;else{k=3===n?1:2,T=(1===n?2:1)*(2-g)}let I=16*(h+1),x=16*(p+1)*(2-g);I-=(m+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:nt.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,r=8,o=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(F.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Z:K});this.player.emit(j.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(r)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(ae)||-1!==e.toString().indexOf(ne))&&this.player.emitError(F.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===J)return void this.emit(F.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=ve());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}return{codec:i,description:e}}(e.slice(5));this.player.debug.log("Webcodecs","VideoDecoder configure",i);try{this.decoder.configure(i)}catch(e){return this.player.debug.error("Webcodecs","VideoDecoder configure",e),void this.player.emit(F.webcodecsConfigureError)}this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const ct={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var lt=Object.keys(ct).reduce(((e,t)=>(e[t]=`\n \n ${ct[t]?`${ct[t]}`:""}\n`,e)),{}),ut=(e,t)=>{const{events:{proxy:i}}=e,r=document.createElement("object");r.setAttribute("aria-hidden","true"),r.setAttribute("tabindex",-1),r.type="text/html",r.data="about:blank",Se(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,s=e.height;i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===s||(o=e.width,s=e.height,e.emit(j.resize),n())}))})),e.$container.appendChild(r),e.on(j.destroy,(()=>{e.$container.removeChild(r)})),e.on(j.volumechange,(()=>{!function(e){if(0===e)Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","flex"),Se(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=Ee(t.$volumePanel,"height")||60,r=Ee(t.$volumeHandle,"height"),o=i-(i-r)*e-r;Se(t.$volumeHandle,"top",`${o}px`),Se(t.$volumeOn,"display","flex"),Se(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(j.loading,(e=>{Se(t.$loading,"display",e?"flex":"none"),Se(t.$poster,"display","none"),e&&Se(t.$playBig,"display","none")}));const a=i=>{let r=Ie(i)?i:e.fullscreen;Se(t.$fullscreenExit,"display",r?"flex":"none"),Se(t.$fullscreen,"display",r?"none":"flex")},n=()=>{Re()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,r=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${r}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{fe.on("change",a),e.events.destroys.push((()=>{fe.off("change",a)}))}catch(e){}e.on(j.webFullscreen,(e=>{a(e),n()})),e.on(j.recording,(()=>{Se(t.$record,"display",e.recording?"none":"flex"),Se(t.$recordStop,"display",e.recording?"flex":"none"),Se(t.$recording,"display",e.recording?"flex":"none"),!e.recording&&t.$recordingTime&&(t.$recordingTime.innerHTML=De(0))})),e.on(j.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=De(e))})),e.on(j.playing,(e=>{Se(t.$play,"display",e?"none":"flex"),Se(t.$playBig,"display",e?"none":"block"),Se(t.$pause,"display",e?"flex":"none"),Se(t.$screenshot,"display",e?"flex":"none"),Se(t.$record,"display",e?"flex":"none"),Se(t.$qualityMenu,"display",e?"flex":"none"),Se(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ke(""))})),e.on(j.kBps,(e=>{const i=ke(e);t.$speed&&(t.$speed.innerHTML=i)}))};function ht(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}ht('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;user-select:none}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAGDElEQVRoQ82ZaahVVRTHf//moKKggQawcmg0olGl0awvRoMVBRGFlQ1YQZIZqRVKmJmFgVk59EFQykYjgmajbJ7n2WiAbKKCBq0Vfznndd723Lvvve/5bMH9cvfaa63/2WuvaYteoIjYHDgEOAAYDOwIbA/4f9PvwHfAt8DbwGvAS5L8f49Ine6OCO89CTgFOBrYqU1Z3wBPAUskPdDm3i72jgBExCXAWGBQp4qTfR8CMyXd0a68tgBExEjgBmCfdhW1yP8eMFHS/S3y0xKAiNgQmA2MaUHwB8DnwNfAbwX/FsDOwG7Ani3I8ElcLOnvHG8WQET0Ax4C9msi7BHgbuAFSXaHhhQRewBDgZOBE5qwvuV1SSuayWsKICIcVZ4Atq4R8mdxKnMkfZT7UnXrEeE7dD7gO7VpDc/PwAhJrzaS3xBAROzrUFcJhVUZjhrjJX3cieHpnogYUNytUTXy/gAOlvROna5aABHhGG5f3qZmk33ztt4wvAbIBcCcBicxSNLKdK0RgNeB/RPmVcBxkp5eF8aXMiPiKODRGpd6XZJduhutBSAipgNX1Bg/tJkv9iao4u4tBzZJ5N4oaXz1v24AImIvwLE4peGSnDX7jCLC2f3JGoV7S3q//D8F8DJwULJpgiQnrz6niLgSmJYofkXSwWsBiIgRwGPNmPscARARDqGp7zu0Orz/l4kjYhlweGLk4Ebhq8oXEc6wGwH/tAhyA2C1JGfsphQRTqBvJkzLJB3ZBaBIKGkGXSqpWab013FWvacooXO21K07256WS4QRsRQ4PhHgsPrxmjsQEZOB6xKGIZJebGZVRDwOHNOJ5ZU9j0s6NqPnUJcpCc9kSVNKAA5ZQyoMn0gamDMsIj4rCrQca7P1zyT1zwmIiE+AKt9yScNUFGuuZaoxd7okR4Ccfzq997S0fleSy5acrjQ//QUMNADXH/cmu0dKcoWZE+r2MKs8I+YdSW5Dc7rcizycMI0ygKuA6ysLjiT9JX3RgtC+BLArYJet5q4JBuBG5aKKsV/ZryWt/p8BcJj2R3VjVNJsA1gEnFH5821JzZqXLtaI6LMTsNIafYsM4L6iOyoNe1FSNSI1PIj1AMCh1CG1pPsNYEkxGin/fFVSWg/VglgPAF4BDqwYs8QAFgDnVP78SJIzbJbWAwBXC9VRzgIDcLVXjfm/AP0kuR/NhbY+uwMR4e7QDf6WFaOmGYBHJbcnlh7USvPSlycQEXYdu1CVxhiARxzPJwsXSarrTbux9TEAh3qH/CqtKSU2Az5NZpsPSTqxBRdy49/SfWki60NJ2WFXTUXqwdmAsphbCJxZUeIGfltJvg8NKSIMfPcc0Mx6tpiLiK2AH4qeoxS3UNJZJYC6emicpJkZAOOAGT0EcLmkmzvQM8oz1BLAxsX8vjqBWynJ86FcJDoLGO4OC8jOMgthnrX696Qkn35Oh+dB21aYfgJ2kLSqqzCKiGuAaxNJkyRNzSlYl+sNmq2pkiZZbxWAJ8g/Aj6NksI+3kplui5AFL2271m1AvVJb1fmqXSsMhGYkhjznqSeNi0d4YsIz3/SCNXNK+omcy5ZPVKv0r2STu3Iig431dRolrRCkvuCLqoD4BlM3Th7nqTzOrSnrW0RcSdQp+tASX4gbAzAK8Ub2KwarQ8Cp0vy20CvU5FUFwN1SfRSSbemSpu9D9wCXFZjpacDoyU925sIIuIw4K5k8lCqmCWpzpbmb2QRMRc4t4GhfiOYJunLngCJiF2Aq4ELG8iZL6mRDflHvohwpnXGrSM/VM8DFkt6rh0gxRd3K3s24BBeRzMkpaP+bnzZR77iTvgLuOR29mxEDnmer7rk9dPT98CvBbNreGdSD8s8WT4i81rpjD5G0vzcR2kJQAHCs5ubgKZjwERhednrHvAa2eaPMFaSm6UstQyglBQRDm92qWwJnNXencGnZpdp67W+bQAVIKOLCz6sTUNTdjdTcyW5N2+bOgZQAeLHQLuV5/UeM6ZZPDXKfa1nqs/4QUXSG21bXdnQYwBV5RHhy2rXcmh0E+5GxOTGyCWwp34fSCovd09sX7P3X2uzPXCoLsVMAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHn0lEQVRoQ81ZbYxcVRl+nnvu7ErSEmtqDdKwO3e2LWJLSEuFNiofFv9AUIpfiSFqCzt31lITGgEjHxKIKVirqXbnzpZSf5BAoHwIhpiAgDVSwBaU1rZLd+7skiIJKCWVpOzOPfc1d3dn986dO3Nn9kvuz3ve87zPc857znnPe4gZ+BZvlzPMed4XDG2sBGWFAGcRXET6ZwTwIsZpgbxL4B0ID/nKf8370Hz1xE08PV33nDKACDOO/roQ15K4TASfbQWLxL9E8AKJvcWs+WQrfcO2UxKQcfSNAn8TwKVTdVzdT/oJbi/aZl+reC0JsArelRDeC8jnW3XUnL0cofC2Ys58ojl7oDkBj4hKv697CXQnA8sxCEsE3hbKh4E9hfMEOBuUNMBzkzAE6Ct9SvXgW9RJtokC0r+VDqb8pyByfgOwZ0g84mv1cqmH/Y2cpntlmUG9BgauEcHVdW3JN6RsXF3axKFGeA0FdBVGVvpi/AnAJ2NAhkHpBU3H7eabSSMV1271yVL63g0C3gigPcbmA/r+umJP28F6+HUFZPLDy4XqVQCjW2HkexJQN7s2j0+FeLRPZqd0idL3Algfg/cRRa8u5toPx/mKFZDJyyKhPgZgQU0nssfNqvxMEK8RktdZoThxM2G0qaUDG/hetC1WgOXo1wG5IGJcNkS+OpBLvTgb5CuYXfnypT75x2hICfh6yVYrEwWknfJ9BH8cJU/fX9MoFmdS1Pja2w+gLYwrkF+U7NTN4X9VM9CxUz6nlD5So5JyeTGbemEmSSZhZQrly0T4fNROa3Xe0A95tPK/SoDleH8DcGF1J97q2ipYYHP+WY6+BZCtEccHXNtcXSPA6iuvg89nGxnPuQIAlqMPAhKJfVnn2qlge588iS3H2wfgS1XxJXpFve0rbNexS9JKwzQIvxmRvsDQCt7QDSwl2ad7h8+nof4Rsdvn2uYlEwKCAwW+jp6gT7u2Wf+kBBCcqjT8RwFZkUQktp18AzS+mXQQWo73NICrqjHU0uAcGl0DlqPvAOSusIFP/+LBbNsrjYhZjvccgK9MiXylk+A5N2de0QijszBykSHGy1XRQd5RzKq7RwVkHG+/ABdPGBADbtZckkTMcjw3mIgku0btArgl28wkYViONxBQndSN/SXbXMvRZM3UQS4zuedS7nOzqVuSQfXh6afW/Kdrq+VJvmLOpxFQLaHleEH+8VgE4ErXNp9JArUcfQiQROeNcXjYtVXiGhq7i+AP1ZsM1tNy9E8A+XmowfdFZQZzHPw4CejMS6dBHYRs6OzirbTyXi+IXIjsiXPeUekX76L3cRJw6Z1ivnWWDgb17BCvXloF7yEIvjP5k4dcWzW6vEyYzmUIje+W0ZB9KFgDjwO4JqTqFdc2J3ekBtMw9wK8YCu9KETpiWAG9kJwbejnQdc2I/lQvIr/g4ADAFaF2OwNZmAPgO9P/pQ3XTu1LCn+60xpM90iNs3tQmP+yv2RUs4eWk55K8Dwnn/Kb1cdgz/gB0ls5nIGzumVBaahgwv+/AleIluZcbxuAQpV+6vvX9jM5WUuBWR6R1aJYQQhFOKPbnY55TU++FL1aDPn2irublplNpcCrILOQaQ3TMCArGXnHvmEGtHFcG2TxFPFrPm15BAqHwPY1HqpjyX9rp1KLHbFZKRv++2qazwb9R4E8N2Qk7IxohYObOapRiLSjlckYCUJbdTeTDLXtUPO9Nv0fwCYIawHXdu8riIgJh/iFtdW2xsKKOgtFNk2HQEQ3uTm1K9a9UPB+qCGOipgVUFSJ0W/W1WBE7zn5sxFSeTSee86EpdT4ImBxFpmgEcfSgglwPMl2wxmv+FnOV5QD1oYMjq5gOozB7MsTyRGVkHfCZGfVe1G4O1FW92T5GA22+MuWwK5p2Snbh8djIrz83bKvI+Ufh9AKrxT+aKsZjLT2RAxdtfWxeoMFJ7frj5dOaeqyioZR98mkLurycgR107N0ntAUuiUj0bL8YxERU1p0Sp4gxB0VEETj7lZ8xuzMcr1MGNytCBehtys2Vkd5hGE8bJeXDl7t2ub18+FiEze2yVEjS+D/qqBbNtrDQUEjWNvYLIjSlaA36sR9e2BzRyeDSHBocph/TCBmkOU4OairX4T9Vv3fcByyr8G+KMaosSAaNlQ6kn9ZSZFWIXyFyH8XbjyUMEXkR2lXKqWS2R11/CxHO9+ABtjiQryMNRWN8u3piOka5cs9rX+KQA7Fod4wM2a8RySBIyGU768TcgtdUieJrEbvjxczKX+2oqQ8REPrrLfAzAvri8h24p2Klrqj+wvTXhNO95GjqXcqp45KUcF3CfAAaEcN+H/25e2/wb2BkfmezAWUrgEgtWEfDnhtVJD0O3mzAeS6CW+UlYArMLwCoj6JYCGZcCIw8pij3vAq8dtH6g3udn2Q0nkg/amBVTA0gXveopsaea9txkCkzZynOC2Vl/rWxYwMSN5b8PoAifWtkY0Yi14CcT9rm0Gd/OWvykLqHjq7Bu5QIm6QkQuAbG85hSPUiKGIDhM8s+a+tnB7ra/t8w61GHaAsLOl+2W+WVdPpfaWCzBE63BM0fbfTlF4KQo/0RKpY71b+To4p6J73/tXyc1fevA3AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class pt{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,r=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${lt.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&r.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${lt.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${r.audio?`\n
\n ${lt.audio}\n ${lt.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${r.play?`
${lt.play}
${lt.pause}
`:""}\n ${r.screenshot?`
${lt.screenshot}
`:""}\n ${r.record?`
${lt.record}
${lt.recordStop}
`:""}\n ${r.fullscreen?`
${lt.fullscreen}
${lt.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),ut(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e;function o(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return we(i-e.y-o/2,0,r-o/2)/(r-o)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=r})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","block"),Se(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=o(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=o(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(Se(t.$controls,"display","block"),o())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(Se(t.$controls,"display","block"),o()))})),i(e.$container,"mouseout",(()=>{s(),Se(t.$controls,"display","none")}));let r=null;const o=()=>{s(),r=setTimeout((()=>{Se(t.$controls,"display","none")}),5e3)},s=()=>{r&&(clearTimeout(r),r=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function o(e,t){r[e]?r[e].push(t):r[e]=[t]}o(re,(()=>{e.fullscreen&&(e.fullscreen=!1)})),o(oe,(()=>{e.volume+=.05})),o(se,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=r[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Le(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Le(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Le(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Le(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Le(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.$container&&(this.player.$container.classList.remove("jessibuca-controls-show-auto-hide"),this.player.$container.classList.remove("jessibuca-controls-show")),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,o=e.video.$videoElement.width/e.video.$videoElement.height;if(r>o){const r=(t-i*o)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/o)/2;e.$container.style.padding=`${r}px 0`}}toggleBar(e){this.$controls&&(Ie(e)||(e="none"===Ee(this.$controls,"display",!1)),Se(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==Ee(this.$controls,"display",!1)),e}}ht(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class gt{static init(){gt.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in gt.types)gt.types.hasOwnProperty(e)&&(gt.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=gt.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),o=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return gt.box(gt.types.trak,gt.tkhd(e),gt.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,o=e.presentHeight;return gt.box(gt.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,o>>>8&255,255&o,0,0]))}static mdia(e){return gt.box(gt.types.mdia,gt.mdhd(e),gt.hdlr(e),gt.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return gt.box(gt.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?gt.constants.HDLR_AUDIO:gt.constants.HDLR_VIDEO,gt.box(gt.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?gt.box(gt.types.smhd,gt.constants.SMHD):gt.box(gt.types.vmhd,gt.constants.VMHD),gt.box(gt.types.minf,t,gt.dinf(),gt.stbl(e))}static dinf(){return gt.box(gt.types.dinf,gt.box(gt.types.dref,gt.constants.DREF))}static stbl(e){return gt.box(gt.types.stbl,gt.stsd(e),gt.box(gt.types.stts,gt.constants.STTS),gt.box(gt.types.stsc,gt.constants.STSC),gt.box(gt.types.stsz,gt.constants.STSZ),gt.box(gt.types.stco,gt.constants.STCO))}static stsd(e){return"audio"===e.type?gt.box(gt.types.stsd,gt.constants.STSD_PREFIX,gt.mp4a(e)):"avc"===e.videoType?gt.box(gt.types.stsd,gt.constants.STSD_PREFIX,gt.avc1(e)):gt.box(gt.types.stsd,gt.constants.STSD_PREFIX,gt.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return gt.box(gt.types.mp4a,r,gt.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return gt.box(gt.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return gt.box(gt.types.avc1,o,gt.box(gt.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return gt.box(gt.types.hvc1,o,gt.box(gt.types.hvcC,t))}static mvex(e){return gt.box(gt.types.mvex,gt.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return gt.box(gt.types.trex,i)}static moof(e,t){return gt.box(gt.types.moof,gt.mfhd(e.sequenceNumber),gt.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return gt.box(gt.types.mfhd,t)}static traf(e,t){let i=e.id,r=gt.box(gt.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=gt.box(gt.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=gt.sdtp(e),a=gt.trun(e,s.byteLength+16+16+8+16+8+8);return gt.box(gt.types.traf,r,o,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,gt.box(gt.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let r=e.duration,o=e.size,s=e.flags,a=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),gt.box(gt.types.trun,i)}static mdat(e){return gt.box(gt.types.mdat,e)}}gt.init();class mt extends Ve{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(j.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(j.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===ee}get isStateClosed(){return this.state===te}get isStateEnded(){return this.state===$}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,r){const o=this.player;if(o)if(this.hasInit){if(i&&0===e[1]){let t=At(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const o=t-this.firstRenderTime;this._decodeVideo(e,o,i,r)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===J)return void this.emit(F.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=ve()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,r){let o=e.slice(5),s={};s=At(o);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:o,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=gt.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,r){const o=this.player;let s=e.slice(5),a=s.byteLength;const n=o.video.$videoElement,A=o._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(gt.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=gt.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendBuffer(s.buffer),o.handleRender(),o.updateStats({fps:!0,ts:t,buf:o.demux&&o.demux.delay||0}),o._times.videoStart||(o._times.videoStart=ve(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),o.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(_),i(this.sourceBuffer,"error",(e=>{t.error("MediaSource","sourceBuffer error",e),this.player.emit(j.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(F.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(F.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(j.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(F.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(F.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(j.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const ft=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,bt=()=>"wakeLock"in navigator;class yt{constructor(e){if(this.player=e,this.enabled=!1,bt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else ft()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var r=document.createElement("source");r.src=i,r.type=`video/${t}`,e.appendChild(r)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(bt())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(ft())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;bt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):ft()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class vt extends Ve{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},h,t),this.debug=new ge(this),this.debug.log("Player","init"),this._opt.forceNoOffscreen=!0,(Re()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))&&(this.debug.log("Player","isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),fe.isEnabled&&this._opt.useWebFullScreen&&(this.debug.log("Player","screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Oe(fe.isEnabled)&&Oe(this._opt.useWebFullScreen)&&(this.debug.log("Player","screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(_)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new me(this),this.video=new ze(this),this._opt.hasAudio&&(this.audio=new Xe(this)),this.recorder=new et(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new tt(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new dt(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new mt(this),this.loaded=!0),this.control=new pt(this),Re()&&(this.keepScreenOn=new yt(this)),(e=>{try{const t=t=>{je(t)===e.$container&&(e.emit(L.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};fe.on("change",t),e.events.destroys.push((()=>{fe.off("change",t)}))}catch(e){}if(e.on(j.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(j.play,(()=>{e.loading=!1})),e.on(j.fullscreen,(t=>{if(t)try{fe.request(e.$container).then((()=>{})).catch((t=>{Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{fe.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Re()&&e.on(j.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(L.fullscreen,e.fullscreen)})),e.on(j.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[j.timeUpdate],i=[j.stats,j.playToRenderTimes,j.audioInfo,j.videoInfo];Object.keys(j).forEach((r=>{e.on(j[r],(o=>{t.includes(r)||(i.includes(r)&&(o=JSON.stringify(o)),e.debug.log("player events",j[r],o))}))})),Object.keys(F).forEach((t=>{e.on(F[t],(i=>{e.debug.log("player event error",F[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=je(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),r(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this.debug.log("Player","init and version is",u),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen");try{this.debug.log("Player options",JSON.stringify(this._opt))}catch(e){}}async destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Re()&&this._opt.useWebFullScreen?(this.emit(j.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(j.fullscreen,e)}get fullscreen(){return fe.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(j.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(j.playing,e),this.emit(j.volumechange,this.volume),e?this.emit(j.play):this.emit(j.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(j.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(j.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ke(this)),this.audio||this._opt.hasAudio&&(this.audio=new Xe(this)),this.demux||(this.demux=new st(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new dt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new mt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new tt(this),this.debug.log("Player","waiting decoderWorker init"),this.once(j.decoderWorkerInit,(()=>{this.debug.log("Player","decoderWorker init success"),e()})))}))}play(e,t){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r();this.loading=!0,this.playing=!1,this._times.playInitStart=ve(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=ve(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(F.webcodecsH265NotSupport,(()=>{this.emit(F.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(F.mediaSourceH265NotSupport,(()=>{this.emit(F.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.mediaSourceH265NotSupport)})),this.mseDecoder.once(F.mediaSourceFull,(()=>{this.emitError(F.mediaSourceFull)})),this.mseDecoder.once(F.mediaSourceAppendBufferError,(()=>{this.emitError(F.mediaSourceAppendBufferError)})),this.mseDecoder.once(F.mediaSourceBufferListLarge,(()=>{this.emitError(F.mediaSourceBufferListLarge)})),this.mseDecoder.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(F.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(F.fetchError,(e=>{this.emitError(F.fetchError,e)})),this.stream.once(F.websocketError,(e=>{this.emitError(F.websocketError,e)})),this.stream.once(j.streamEnd,(e=>{this.emitError(j.streamEnd,e)})),this.stream.once(j.streamSuccess,(()=>{i(),this._times.streamResponse=ve(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{r(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(j.timeout,j.delayTimeout),this.emit(j.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(j.timeout,j.loadingTimeout),this.emit(j.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(j.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ve()),xe(e.ts)&&(this._stats.ts=e.ts),xe(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=ve();t-this._startBpsTime<1e3||(this.emit(j.stats,this._stats),this.emit(j.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(j.playToRenderTimes,e)}getOption(){return this._opt}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(j.error,e,t),this.emit(e,t)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class wt extends Ve{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);if(this._checkHasCreated(i))throw new Error("Jessibuca container has been created and can not be created again",i);if(t.videoBuffer>10&&console.warn("Jessibuca",`videoBuffer ${t.videoBuffer}s is too long, will black screen for ${t.videoBuffer}s , it is recommended to set it to less than 10s`),!i.classList)throw new Error("Jessibuca container option must be DOM Element");var r,o,s;i.classList.add("jessibuca-container"),r=i,o=l,s="xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),r&&(r.dataset?r.dataset[o]=s:r.setAttribute("data-"+o,s)),delete t.container,t.forceNoOffscreen=!0,Re()&&(t.controlAutoHide=!1),xe(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),xe(t.timeout)&&(Te(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Te(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._destroyed=!1,this.events=new me(this),this.debug=new ge(this),this._initPlayer(i,t),console.log('Jessibuca version: "3.2.6"')}async destroy(){var e,t;this._destroyed=!0,this.events&&(this.events.destroy(),this.events=null),this.player&&(await this.player.destroy(),this.player=null),this.$container&&(this.$container.classList.remove("jessibuca-container"),this.$container.classList.remove("jessibuca-fullscreen-web"),e=this.$container,t=l,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._opt=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.off()}_initPlayer(e,t){this.player=new vt(e,t);try{this.debug.log("jessibuca","_initPlayer",JSON.stringify(this.player.getOption()))}catch(e){}this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(L).forEach((e=>{this.player.on(L[e],(t=>{this.emit(e,t)}))}))}isDestroyed(){return this._destroyed}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case N:t.isFullResize=!1,t.isResize=!1;break;case H:t.isFullResize=!1,t.isResize=!0;break;case z:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}async close(){return await this.destroy(),!0}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{if(!e&&!this._opt.url)return this.emit(j.error,F.playError),void r("play url is empty");e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{r(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),r(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{r(e)}))}))}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{this._opt.url=e,this._opt.playOptions=t;const o=0===e.indexOf("http"),d=o?a:s,c=o||-1!==e.indexOf(".flv")||this._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(F.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(F.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","media source h265 not support and paused")}))})),this.player.once(F.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(F.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(F.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","mse source buffer error and paused")}))})),this.player.once(F.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","webcodecs h265 not support and paused")}))})),this.player.once(F.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(F.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs decode error and paused")}))})),this.player.once(F.webcodecsConfigureError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs Configure error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Configure error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Configure error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs Configure error and paused")}))})),this.player.once(F.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay?this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))})):this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and paused")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and paused error",e)}))})),this.player.once(F.fetchError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","fetch error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","fetch error and pause play error",e)}))})),this.player.once(F.websocketError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","websocket Error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","websocket Error and pause play error",e)}))})),this.player.once(j.streamEnd,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","stream End and pause play")})).catch((e=>{this.debug.warn("Jessibuca","stream End and pause play error",e)}))})),this.player.on(j.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(j.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})):this.player.once(j.decoderWorkerInit,(()=>{this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,r){return this.player.video?this.player.video.screenshot(e,t,i,r):""}startRecord(e,t){return new Promise(((i,r)=>{this.player.playing?(this.player.startRecord(e,t),i()):r()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,l);return!!t}toggleControlBar(e){this.isDestroyed()||this.player&&this.player.toggleControlBar(e)}getControlBarShow(){if(this.isDestroyed())return!1;let e=!1;return this.player&&(e=this.player.getControlBarShow()),e}}return o(wt,"ERROR",F),o(wt,"TIMEOUT",{loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout}),window.Jessibuca=wt,wt})); diff --git a/package.json b/package.json index 45490647..dcca72bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jessibuca", - "version": "1.0.0", + "version": "3.2.6", "scripts": { "build": "npx cross-env NODE_ENV=production rollup -c", "build:wasm": "python wasm/make.py --wasm && npm run build && npm run build:demo", diff --git a/rollup.config.js b/rollup.config.js index 5ee6fd39..d4109364 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -37,6 +37,7 @@ const baseConfig = { replace({ exclude: 'node_modules/**', __ENV__: JSON.stringify(process.env.NODE_ENV || 'development'), + __VERSION__: JSON.stringify(require('./package.json').version), }), isProd && terser({ mangle: true, diff --git a/src/constant/index.js b/src/constant/index.js index b223c9dd..9c9155b3 100644 --- a/src/constant/index.js +++ b/src/constant/index.js @@ -19,6 +19,8 @@ export const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000 export const CONTAINER_DATA_SET_KEY = 'jessibuca' +export const VERSION = '__VERSION__' + // default player options export const DEFAULT_PLAYER_OPTIONS = { diff --git a/src/jessibuca.js b/src/jessibuca.js index a021f3ac..5dd96df4 100644 --- a/src/jessibuca.js +++ b/src/jessibuca.js @@ -7,7 +7,8 @@ import { EVENTS_ERROR, JESSIBUCA_EVENTS, PLAYER_PLAY_PROTOCOL, - SCALE_MODE_TYPE + SCALE_MODE_TYPE, + VERSION } from "./constant"; import { getElementDataset, @@ -106,6 +107,7 @@ class Jessibuca extends Emitter { this.events = new Events(this); this.debug = new Debug(this); this._initPlayer($container, _opt); + console.log(`Jessibuca version: ${VERSION}`); } /** diff --git a/src/player/index.js b/src/player/index.js index 8e97f61a..e650de67 100644 --- a/src/player/index.js +++ b/src/player/index.js @@ -1,4 +1,4 @@ -import {DEFAULT_PLAYER_OPTIONS, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from "../constant"; +import {DEFAULT_PLAYER_OPTIONS, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS,VERSION} from "../constant"; import Debug from "../utils/debug"; import Events from "../utils/events"; import property from './property'; @@ -168,6 +168,7 @@ export default class Player extends Emitter { events(this); observer(this); + this.debug.log('Player', 'init and version is',VERSION); if (this._opt.useWCS) { this.debug.log('Player', 'use WCS') diff --git a/src/worker.js b/src/worker.js index ae4789bd..a1c2e62d 100644 --- a/src/worker.js +++ b/src/worker.js @@ -20,7 +20,7 @@ Module.postRun = function () { decoder: new VideoDecoder({ output: function (videoFrame) { if (!wcsVideoDecoder.isEmitInfo) { - decoder.opt.debug && console.log('Jessibuca: [worker] Webcodecs Video Decoder initSize'); + decoder.opt.debug && console.log('Jb: [worker] Webcodecs Video Decoder initSize'); postMessage({ cmd: WORKER_CMD_TYPE.initVideo, w: videoFrame.codedWidth, @@ -166,7 +166,7 @@ Module.postRun = function () { const uData = Module.HEAPU8.subarray(u, u + qsize); const vData = Module.HEAPU8.subarray(v, v + (qsize)); // if (isGreenYUV(Uint8Array.from(yData))) { - // decoder.opt.debug && console.log('Jessibuca: [worker]: draw offscreenCanvas is green yuv'); + // decoder.opt.debug && console.log('Jb: [worker]: draw offscreenCanvas is green yuv'); // return // } @@ -185,7 +185,7 @@ Module.postRun = function () { const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize)); const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize))); // if (isGreenYUV(yData)) { - // decoder.opt.debug && console.log('Jessibuca: [worker]: draw is green yuv'); + // decoder.opt.debug && console.log('Jb: [worker]: draw is green yuv'); // return // } const outputArray = [yData, uData, vData]; @@ -227,13 +227,13 @@ Module.postRun = function () { }, init: function () { - decoder.opt.debug && console.log('Jessibuca: [worker] init'); + decoder.opt.debug && console.log('Jb: [worker] init'); const _doDecode = (data) => { - // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode'); + // decoder.opt.debug && console.log('Jb: [worker]: _doDecode'); if (decoder.opt.useWCS && decoder.useOffscreen() && data.type === MEDIA_TYPE.video && wcsVideoDecoder.decode) { wcsVideoDecoder.decode(data.payload, data.ts); } else { - // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode wasm'); + // decoder.opt.debug && console.log('Jb: [worker]: _doDecode wasm'); data.decoder.decode(data.payload, data.ts); } }; @@ -261,22 +261,22 @@ Module.postRun = function () { } else { var data = buffer[0]; if (this.getDelay(data.ts) === -1) { - // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1'); + // decoder.opt.debug && console.log('Jb: [worker]: common dumex delay is -1'); buffer.shift(); _doDecode(data); } else if (this.delay > decoder.opt.videoBuffer + decoder.opt.videoBufferDelay) { - // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`); + // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay}, set dropping is true`); this.resetDelay(); this.dropping = true; } else { while (buffer.length) { data = buffer[0]; if (this.getDelay(data.ts) > decoder.opt.videoBuffer) { - // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`); + // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay}, decode`); buffer.shift(); _doDecode(data); } else { - // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`); + // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`); break; } } @@ -289,7 +289,7 @@ Module.postRun = function () { this.stopId = setInterval(loop, 10); }, close: function () { - decoder.opt.debug && console.log('Jessibuca: [worker]: close'); + decoder.opt.debug && console.log('Jb: [worker]: close'); clearInterval(this.stopId); this.stopId = null; audioDecoder.clear && audioDecoder.clear();