diff --git a/d.ts/jessibuca.d.ts b/d.ts/jessibuca.d.ts index 71f30b80..b1ead7db 100644 --- a/d.ts/jessibuca.d.ts +++ b/d.ts/jessibuca.d.ts @@ -151,6 +151,18 @@ declare namespace Jessibuca { * heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 */ heartTimeoutReplay?: boolean, + /** + * heartTimeoutReplay 从试次数,超过之后,不再自动播放 + */ + heartTimeoutReplayTimes?: number, + /** + * loadingTimeout loading之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + */ + loadingTimeoutReplay?: boolean, + /** + * heartTimeoutReplay 从试次数,超过之后,不再自动播放 + */ + loadingTimeoutReplayTimes?: number /** * wasm解码报错之后,不再抛出异常,而是直接重新播放视频地址。 */ diff --git a/demo/api.md b/demo/api.md index 2ba69cf9..771a6a25 100644 --- a/demo/api.md +++ b/demo/api.md @@ -5,6 +5,7 @@ options 支持的参数有: ### container + - **类型**:`DOM` or `string` - **用法**: @@ -13,6 +14,7 @@ options 支持的参数有: > 若为 string ,则底层调用的是 document.querySelector(container) 源码 + ```js let $container = options.container; @@ -25,14 +27,14 @@ if (!$container) { } ``` - ### videoBuffer + - **类型**:`number` - **默认值**:`1` -- **用法**: -设置最大缓冲时长,单位秒,播放器会自动消除延迟。 +- **用法**: 设置最大缓冲时长,单位秒,播放器会自动消除延迟。 ### decoder + - **类型**:`string` - **默认值**:`decoder.js` - **用法**: @@ -41,16 +43,16 @@ worker地址 > 默认引用的是根目录下面的decoder.js文件 ,decoder.js 与 decoder.wasm文件必须是放在同一个目录下面。 - ### forceNoOffscreen + - **类型**:`boolean` - **默认值**:true - **用法**: 是否不使用离屏模式(提升渲染能力) - ### hiddenAutoPause + - **类型**:`boolean` - **默认值**:false - **用法**: @@ -59,16 +61,16 @@ worker地址 是否开启当页面的'visibilityState'变为'hidden'的时候,自动暂停播放。 - ### hasAudio + - **类型**:`boolean` - **默认值**:true - **用法**: 是否有音频,如果设置`false`,则不对音频数据解码,提升性能。 - ### rotate + - **类型**:`number` - **默认值**:0 - **用法**: @@ -76,6 +78,7 @@ worker地址 设置旋转角度,只支持,0(默认) ,180,270 三个值。 ### isResize + - **类型**:`boolean` - **默认值**:`true` - **用法**: @@ -83,32 +86,30 @@ worker地址 1. 当为`true`的时候:视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边。 等同于 `setScaleMode(1)` 2. 当为`false`的时候:视频画面完全填充canvas区域,画面会被拉伸。等同于 `setScaleMode(0)` - - ### isFullResize + - **类型**:`boolean` - **默认值**:`false` - **用法**: -1. 当为`true`的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。等同于 `setScaleMode(2)` +1. 当为`true`的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。等同于 `setScaleMode(2)` ### isFlv + - **类型**:`boolean` - **默认值**:`false` - **用法**: -1. 当为`true`的时候:ws协议不检验是否以.flv为依据,进行协议解析。 - - - +1. 当为`true`的时候:ws协议不检验是否以.flv为依据,进行协议解析。 ### debug + - **类型**:`boolean` - **默认值**:`false` -- **用法**: -是否开启控制台调试打印 +- **用法**: 是否开启控制台调试打印 ### timeout + - **类型**:`number` - **默认值**:`10` - **用法**: @@ -116,16 +117,34 @@ worker地址 1. 设置超时时长, 单位秒 2. 在连接成功之前(loading)和播放中途(heart),如果超过设定时长无数据返回,则回调timeout事件 - ### heartTimeout + - **类型**:`number` -- **默认值**:`10` +- **默认值**:`5` - **用法**: 1. 设置超时时长, 单位秒 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + +### heartTimeoutReplay + +- **类型**:`boolean` +- **默认值**:`false` +- **用法**: 是否开启心跳超时之后自动再播放 + +> heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + +### heartTimeoutReplayTimes + +- **类型**:`number` +- **默认值**:`3` +- **用法**: heartTimeoutReplay 重试次数 + +> heartTimeoutReplay 重试失败之后,不再重新播放视频地址。 + ### loadingTimeout + - **类型**:`number` - **默认值**:`10` - **用法**: @@ -134,30 +153,41 @@ worker地址 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + +### loadingTimeoutReplay + +- **类型**:`boolean` +- **默认值**:`false` +- **用法**: 是否开启loading超时之后自动再播放 + +> loadingTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + +### loadingTimeoutReplayTimes + +- **类型**:`number` +- **默认值**:`3` +- **用法**: heartTimeoutReplay 重试次数 + +> loadingTimeoutReplay 重试失败之后,不再重新播放视频地址。 + + ### supportDblclickFullscreen + - **类型**:`boolean` - **默认值**:`false` -- **用法**: -是否支持屏幕的双击事件,触发全屏,取消全屏事件。 +- **用法**: 是否支持屏幕的双击事件,触发全屏,取消全屏事件。 ### showBandwidth + - **类型**:`boolean` - **默认值**:`false` -- **用法**: -是否显示网速 +- **用法**: 是否显示网速 ### operateBtns + - **类型**:`object` -- **默认值**:`{ - fullscreen:false, - screenshot: false, - play: false, - audio: false, - record:false - }` -- **用法**: -配置操作按钮 -其中 +- **默认值**:`{ fullscreen:false, screenshot: false, play: false, audio: false, record:false }` +- **用法**: 配置操作按钮 其中 1. fullscreen 是否显示全屏按钮 2. screenshot 是否显示截图按钮 @@ -166,91 +196,83 @@ worker地址 5. record 是否显示录制按钮 ### keepScreenOn + - **类型**:`boolean` - **默认值**:`false` -- **用法**: -开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 +- **用法**: 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 ### isNotMute + - **类型**:`boolean` - **默认值**:`false` -- **用法**: -是否开启声音,默认是关闭声音播放的。 +- **用法**: 是否开启声音,默认是关闭声音播放的。 ### loadingText + - **类型**:`string` - **默认值**:`` -- **用法**: -加载过程中文案。 +- **用法**: 加载过程中文案。 ### background + - **类型**:`string` - **默认值**:`` -- **用法**: -背景图片。 +- **用法**: 背景图片。 ### useMSE + - **类型**:`boolean` - **默认值**:`false` -- **用法**: -是否开启MediaSource硬解码 +- **用法**: 是否开启MediaSource硬解码 > 视频编码只支持H.264视频(Safari on iOS不支持) > 不支持 forceNoOffscreen 为 false (开启离屏渲染) ### useWCS + - **类型**:`boolean` - **默认值**:`false` -- **用法**: - 是否开启Webcodecs硬解码 +- **用法**: 是否开启Webcodecs硬解码 > 视频编码只支持H.264视频 (需在chrome 94版本以上,需要https或者localhost环境) > 支持 forceNoOffscreen 为 false (开启离屏渲染) - ### autoWasm + - **类型**:`boolean` -- **默认值**:`false` -- **用法**: - 在使用MSE或者Webcodecs 播放H265的时候,是否自动降级到wasm模式。 +- **默认值**:`true` +- **用法**: 在使用MSE或者Webcodecs 播放H265的时候,是否自动降级到wasm模式。 > 设置为false 则直接关闭播放,抛出Error 异常,设置为true 则会自动切换成wasm模式播放。 - ### hotKey + - **类型**:`boolean` - **默认值**:`false` -- **用法**: - 是否开启键盘快捷键 +- **用法**: 是否开启键盘快捷键 > 目前支持的键盘快捷键有:esc -> 退出全屏;arrowUp -> 声音增加;arrowDown -> 声音减少; -### heartTimeoutReplay -- **类型**:`boolean` -- **默认值**:`false` -- **用法**: - 是否开启心跳超时之后自动再播放 - -> heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 ### wasmDecodeErrorReplay + - **类型**:`boolean` -- **默认值**:`false` -- **用法**: - 是否开启解码失败重新播放 +- **默认值**:`true` +- **用法**: 是否开启解码失败重新播放 > wasm解码报错之后,不再抛出异常,而是直接重新播放视频地址。 ## 方法 ### setDebug(flag) + - **参数**: - - `{boolean} flag` -- **用法**: -是否开启控制台调试打印 + - `{boolean} flag` +- **用法**: 是否开启控制台调试打印 + ```js // 开启 jessibuca.setDebug(true) @@ -259,52 +281,53 @@ jessibuca.setDebug(false) ``` ### mute() -- **用法**: -静音 + +- **用法**: 静音 + ```js jessibuca.mute() ``` ### cancelMute() -- **用法**: -取消静音 + +- **用法**: 取消静音 + ```js jessibuca.cancelMute() ``` ### audioResume() -- **用法**: -留给上层用户操作来触发音频恢复的方法。 + +- **用法**: 留给上层用户操作来触发音频恢复的方法。 iPhone,chrome等要求自动播放时,音频必须静音,需要由一个真实的用户交互操作来恢复,不能使用代码。 https://developers.google.com/web/updates/2017/09/autoplay-policy-changes - - ### setTimeout(time) + - **参数**: - - `{number} time` + - `{number} time` - **用法**: -设置超时时长, 单位秒 -在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件 +设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件 ```js jessibuca.setTimeout(10) -jessibuca.on('timeout',function(){ +jessibuca.on('timeout', function () { // }); ``` ### setScaleMode(mode) + - **参数**: - - `{number} mode` + - `{number} mode` - **用法**: -1. `0` 视频画面完全填充canvas区域,画面会被拉伸 等同于参数 `isResize` 为false +1. `0` 视频画面完全填充canvas区域,画面会被拉伸 等同于参数 `isResize` 为false 2. `1` 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边 等同于参数 `isResize` 为true 3. `2` 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 等同于参数 `isFullResize` 为true @@ -317,78 +340,83 @@ jessibuca.setScaleMode(2) ``` ### pause() + - **返回**: - `{Promise}` -- **用法**: -暂停播放 +- **用法**: 暂停播放 + ```js -jessibuca.pause().then(()=>{ +jessibuca.pause().then(() => { console.log('pause success') - jessibuca.play().then(()=>{ + jessibuca.play().then(() => { - }).catch((e)=>{ + }).catch((e) => { }) -}).catch((e)=>{ - console.log('pause error',e); +}).catch((e) => { + console.log('pause error', e); }) ``` + 可以在pause 之后,再调用 `play()`方法就继续播放之前的流。 ### close() -- **用法**: -关闭视频,不释放底层资源 + +- **用法**: 关闭视频,不释放底层资源 + ```js jessibuca.close(); ``` - ### destroy() -- **用法**: -关闭视频,释放底层资源 + +- **用法**: 关闭视频,释放底层资源 + ```js jessibuca.destroy() ``` ### clearView() -- **用法**: -清理画布为黑色背景 + +- **用法**: 清理画布为黑色背景 + ```js jessibuca.clearView() ``` ### play([url]) + - **参数**: - - `{string} url` + - `{string} url` - **返回**: - - `{Promise}` -- **用法**: -播放视频 + - `{Promise}` +- **用法**: 播放视频 + ```js -jessibuca.play('url').then(()=>{ +jessibuca.play('url').then(() => { console.log('play success') -}).catch((e)=>{ - console.log('play error',e) +}).catch((e) => { + console.log('play error', e) }) // jessibuca.play() ``` ### resize() -- **用法**: -重新调整视图大小 + +- **用法**: 重新调整视图大小 ### setBufferTime(time) + - **参数**: - - `{number} time` + - `{number} time` -- **用法**: -设置最大缓冲时长,单位秒,播放器会自动消除延迟。 +- **用法**: 设置最大缓冲时长,单位秒,播放器会自动消除延迟。 等同于 `videoBuffer` 参数。 @@ -398,10 +426,10 @@ jessibuca.setBufferTime(0.2) ``` ### setRotate(deg) + - **参数**: - - `{number} deg` -- **用法**: -设置旋转角度,只支持,0(默认) ,180,270 三个值。 + - `{number} deg` +- **用法**: 设置旋转角度,只支持,0(默认) ,180,270 三个值。 > 可用于实现监控画面小窗和全屏效果,由于iOS没有全屏API,此方法可以模拟页面内全屏效果而且多端效果一致。 @@ -413,11 +441,10 @@ jessibuca.setRotate(90) jessibuca.setRotate(270) ``` - - ### setVolume(volume) + - **参数**: - - `{number} volume` + - `{number} volume` - **用法**: @@ -436,29 +463,31 @@ jessibuca.setVolume(1) ``` ### hasLoaded() + - **返回值**:`boolean` -- **用法**: -返回是否加载完毕 +- **用法**: 返回是否加载完毕 + ```js var result = jessibuca.hasLoaded() console.log(result) // true ``` ### setKeepScreenOn() -- **用法**: -开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 -H5目前在chrome\edge 84, android chrome 84及以上有原生亮屏API, 需要是https页面 -其余平台为模拟实现,此时为兼容实现,并不保证所有浏览器都支持 + +- **用法**: 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 H5目前在chrome\edge 84, android chrome 84及以上有原生亮屏API, 需要是https页面 + 其余平台为模拟实现,此时为兼容实现,并不保证所有浏览器都支持 ```js jessibuca.setKeepScreenOn() ``` + ### setFullscreen(flag) + - **参数**: - - `{boolean} flag` + - `{boolean} flag` + +- **用法**: 全屏(取消全屏)播放视频 -- **用法**: -全屏(取消全屏)播放视频 ```js jessibuca.setFullscreen(true) @@ -466,8 +495,8 @@ jessibuca.setFullscreen(true) jessibuca.setFullscreen(false) ``` - ### screenshot(filename, format, quality,type) + - **参数**: - `{string} filename` - `{string} format` @@ -476,6 +505,7 @@ jessibuca.setFullscreen(false) - **用法**: 截图,调用后弹出下载框保存截图 + 1. filename: 可选参数, 保存的文件名, 默认 `时间戳` 2. format : 可选参数, 截图的格式,可选png或jpeg或者webp ,默认 `png` 3. quality: 可选参数, 当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 `0.92` @@ -483,216 +513,270 @@ jessibuca.setFullscreen(false) ```js -jessibuca.screenshot("test","png",0.5) +jessibuca.screenshot("test", "png", 0.5) -const base64 = jessibuca.screenshot("test","png",0.5,'base64') +const base64 = jessibuca.screenshot("test", "png", 0.5, 'base64') -const fileBlob = jessibuca.screenshot("test",'blob') +const fileBlob = jessibuca.screenshot("test", 'blob') ``` ### startRecord(fileName,fileType) + - **参数**: - `{string} filename` - `{string} fileType` -- **用法**: - 开始录制。 +- **用法**: 开始录制。 + 1. fileName: 可选,默认时间戳 2. fileType: 可选,默认webm,支持webm 和mp4 格式 - ```js -jessibuca.startRecord('xxx','webm') +jessibuca.startRecord('xxx', 'webm') ``` - ### stopRecordAndSave() -- **用法**: - 暂停录制并下载。 +- **用法**: 暂停录制并下载。 + ```js jessibuca.stopRecordAndSave() ``` - - ### isPlaying() + - **返回值**:`boolean` -- **用法**: - 返回是否正在播放中状态。 +- **用法**: 返回是否正在播放中状态。 + ```js var result = jessibuca.isPlaying() console.log(result) // true ``` ### isMute() + - **返回值**:`boolean` -- **用法**: - 返回是否静音。 +- **用法**: 返回是否静音。 + ```js var result = jessibuca.isMute() console.log(result) // true ``` - ### isRecording() + - **返回值**:`boolean` -- **用法**: - 返回是否正在录制。 +- **用法**: 返回是否正在录制。 + ```js var result = jessibuca.isRecording() console.log(result) // true ``` ### on(event, callback) + - **参数**: - `{string} event` - `{function} callback` -- **用法**: -监听方法 +- **用法**: 监听方法 ```js -jessibuca.on("load",function(){console.log('load')}) +jessibuca.on("load", function () { + console.log('load') +}) ``` ## 事件 ### load + 监听 jessibuca 初始化事件。 ```js -jessibuca.on("load",function(){console.log('load')}) +jessibuca.on("load", function () { + console.log('load') +}) ``` ### timeUpdate + 视频播放持续时间,单位ms + ```js -jessibuca.on('timeUpdate',function (ts) {console.log('timeUpdate',ts);}) +jessibuca.on('timeUpdate', function (ts) { + console.log('timeUpdate', ts); +}) ``` ### videoInfo + 当解析出视频信息时回调,2个回调参数 + 1. width:视频宽 2. height:视频高 + ```js -jessibuca.on("videoInfo",function(data){console.log('width:',data.width,'height:',data.width)}) +jessibuca.on("videoInfo", function (data) { + console.log('width:', data.width, 'height:', data.width) +}) ``` ### audioInfo + 当解析出音频信息时回调,2个回调参数 + 1. numOfChannels:声频通道 2. sampleRate 采样率 ```js -jessibuca.on("audioInfo",function(data){console.log('numOfChannels:',data.numOfChannels,'sampleRate',data.sampleRate)}) +jessibuca.on("audioInfo", function (data) { + console.log('numOfChannels:', data.numOfChannels, 'sampleRate', data.sampleRate) +}) ``` ### log + 信息,包含错误信息 + ```js -jessibuca.on("log",function(data){console.log('data:',data)}) +jessibuca.on("log", function (data) { + console.log('data:', data) +}) ``` ### error + 错误信息 目前已有的错误信息: + 1. jessibuca.ERROR.playError ;播放错误,url 为空的时候,调用play方法 2. jessibuca.ERROR.fetchError ;http 请求失败 -3. jessibuca.ERROR.websocketError; websocket 请求失败 +3. jessibuca.ERROR.websocketError; websocket 请求失败 4. jessibuca.ERROR.webcodecsH265NotSupport; webcodecs 解码 h265 失败 5. jessibuca.ERROR.mediaSourceH265NotSupport; mediaSource 解码 h265 失败 6. jessibuca.ERROR.wasmDecodeError ; wasm 解码失败 - - - ```js -jessibuca.on("error",function(error){ - if(error === jessibuca.ERROR.fetchError){ +jessibuca.on("error", function (error) { + if (error === jessibuca.ERROR.fetchError) { // - } - else if(error === jessibuca.ERROR.webcodecsH265NotSupport){ + } else if (error === jessibuca.ERROR.webcodecsH265NotSupport) { // } - console.log('error:',error) + console.log('error:', error) }) ``` ### kBps + 当前网速, 单位KB 每秒1次, + ```js -jessibuca.on("kBps",function(data){console.log('kBps:',data)}) +jessibuca.on("kBps", function (data) { + console.log('kBps:', data) +}) ``` ### start + 渲染开始 + ```js -jessibuca.on("start",function(){console.log('start render')}) +jessibuca.on("start", function () { + console.log('start render') +}) ``` - ### timeout + 当设定的超时时间内无数据返回,则回调 1. jessibuca.TIMEOUT.loadingTimeout ; 同loadingTimeout -2. jessibuca.TIMEOUT.delayTimeout ; 同delayTimeout +2. jessibuca.TIMEOUT.delayTimeout ; 同delayTimeout ```js -jessibuca.on("timeout",function(error){console.log('timeout:',error)}) +jessibuca.on("timeout", function (error) { + console.log('timeout:', error) +}) ``` ### loadingTimeout + 当play()的时候,如果没有数据返回,则回调 + ```js -jessibuca.on("loadingTimeout",function(){console.log('timeout')}) +jessibuca.on("loadingTimeout", function () { + console.log('timeout') +}) ``` - ### delayTimeout + 当播放过程中,如果超过timeout之后没有数据渲染,则抛出异常。 + ```js -jessibuca.on("delayTimeout",function(){console.log('timeout')}) +jessibuca.on("delayTimeout", function () { + console.log('timeout') +}) ``` - - ### fullscreen + 当前是否全屏 + ```js -jessibuca.on("fullscreen",function(flag){console.log('is fullscreen',flag)}) +jessibuca.on("fullscreen", function (flag) { + console.log('is fullscreen', flag) +}) ``` + ### play + 触发播放事件 + ```js -jessibuca.on("play",function(flag){console.log('play')}) +jessibuca.on("play", function (flag) { + console.log('play') +}) ``` + ### pause + 触发暂停事件 + ```js -jessibuca.on("pause",function(flag){console.log('pause')}) +jessibuca.on("pause", function (flag) { + console.log('pause') +}) ``` ### mute + 触发声音事件,返回boolean值 + ```js -jessibuca.on("mute",function(flag){console.log('is mute',flag)}) +jessibuca.on("mute", function (flag) { + console.log('is mute', flag) +}) ``` + ### stats + 流状态统计,流开始播放后回调,每秒1次。 1. buf: 当前缓冲区时长,单位毫秒, @@ -700,10 +784,15 @@ jessibuca.on("mute",function(flag){console.log('is mute',flag)}) 3. abps: 当前音频码率,单位bit, 4. vbps: 当前视频码率,单位bit, 5. ts:当前视频帧pts,单位毫秒 + ```js -jessibuca.on("stats",function(s){console.log("stats is",s)}) +jessibuca.on("stats", function (s) { + console.log("stats is", s) +}) ``` + ### performance + 渲染性能统计,流开始播放后回调,每秒1次。 - 0: 表示卡顿 @@ -711,37 +800,53 @@ jessibuca.on("stats",function(s){console.log("stats is",s)}) - 2: 表示非常流程 ```js -jessibuca.on("performance",function(performance){console.log("performance is",performance)}) +jessibuca.on("performance", function (performance) { + console.log("performance is", performance) +}) ``` ### recordStart + 录制开始的事件 ```js -jessibuca.on("recordStart",function(){console.log("record start")}) +jessibuca.on("recordStart", function () { + console.log("record start") +}) ``` ### recordEnd + 录制结束的事件 ```js -jessibuca.on("recordEnd",function(){console.log("record end")}) +jessibuca.on("recordEnd", function () { + console.log("record end") +}) ``` ### recordingTimestamp + 录制的时候,返回的录制时长,1s一次 ```js -jessibuca.on("recordingTimestamp",function(timestamp){console.log("recordingTimestamp is",timestamp)}) +jessibuca.on("recordingTimestamp", function (timestamp) { + console.log("recordingTimestamp is", timestamp) +}) ``` ### playToRenderTimes + 监听调用play方法 经过 初始化-> 网络请求-> 解封装 -> 解码 -> 渲染 一系列过程的时间消耗 ```js -jessibuca.on("playToRenderTimes",function(times){console.log("playToRenderTimes is",times)}) +jessibuca.on("playToRenderTimes", function (times) { + console.log("playToRenderTimes is", times) +}) ``` + 数据结构如下。 + ``` { playInitStart: '', //1 diff --git a/demo/public/decoder.js b/demo/public/decoder.js index f2353d77..27ad7380 100644 --- a/demo/public/decoder.js +++ b/demo/public/decoder.js @@ -6540,10 +6540,18 @@ // 快捷键 loadingTimeout: 10, // loading timeout - heartTimeout: 10, + heartTimeout: 5, // heart timeout timeout: 10, // second + loadingTimeoutReplay: false, + // loading timeout replay + heartTimeoutReplay: false, + // heart timeout replay。 + loadingTimeoutReplayTimes: 3, + // loading timeout replay fail times + heartTimeoutReplayTimes: 3, + // heart timeout replay fail times supportDblclickFullscreen: false, showBandwidth: false, // @@ -6579,11 +6587,9 @@ // useOffscreen: false, // - autoWasm: false, + autoWasm: true, // 自动降级到 wasm 模式 - heartTimeoutReplay: false, - // 心跳超时之后自动再播放。 - wasmDecodeErrorReplay: false, + wasmDecodeErrorReplay: true, // 解码失败重新播放。 openWebglAlignment: false // https://github.com/langhuihui/jessibuca/issues/152 diff --git a/demo/public/decoder.js.map b/demo/public/decoder.js.map index c86abebd..139d99b7 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","../../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={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};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\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){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.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;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)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.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;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){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){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){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){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){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 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 INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;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(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){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)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var 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={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"I\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"M\"];addOnInit(Module[\"asm\"][\"J\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);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(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}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){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}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 setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(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(\"randomDevice\")}}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.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(function(p){return!!p}),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:function(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 mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size=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);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!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:function(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:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(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:function(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:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:function(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:function(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:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=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:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};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}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(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:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(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:function(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){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(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){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:function(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(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(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:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i\"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;ithis.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=function(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);if(typeof Uint8Array!=\"undefined\")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(function(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(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function 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);if(contents.slice){for(var i=0;i>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)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},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 node;var lookup=FS.lookupPath(path,{follow:true});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},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){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},get64:function(low,high){return low}};function ___sys_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.open(stream.path,stream.flags,0,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 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14: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))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}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}else{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>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 finalizationGroup=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 attachFinalizer(handle){if(\"undefined\"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn(\"object already deleted: \"+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.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}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}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(){}var registeredPointers={};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_register(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 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)}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}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 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){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.indexOf(\"j\")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;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);var args=[rawConstructor];var destructors=[];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]=function unboundTypeHandler(){throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+\" called with \"+arguments.length+\" arguments, expected \"+(argCount-1))}destructors.length=0;args.length=argCount;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;i4&&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>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=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf(\"unsigned\")!=-1;registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":function(destructors,value){if(typeof value!==\"number\"&&typeof value!==\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}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+\"]!\")}return isUnsignedType?value>>>0:value|0},\"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;i>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;i>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 requireHandle(handle){if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value}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=requireHandle(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=__emval_register(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)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(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}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 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_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return __emval_register(v)}function _abort(){abort()}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){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{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,1).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize,1).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].indexOf(\".\")!=-1&&(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].indexOf(\"_emscripten_\")>=0)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 abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}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){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){try{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}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{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}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}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))abort(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))abort(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))abort(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))abort(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))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _setTempRet0($i){setTempRet0($i|0)}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();embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();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}var asmLibraryArg={\"x\":___sys_fcntl64,\"w\":___sys_open,\"C\":__embind_register_bool,\"n\":__embind_register_class,\"i\":__embind_register_class_constructor,\"f\":__embind_register_class_function,\"H\":__embind_register_class_property,\"B\":__embind_register_emval,\"l\":__embind_register_float,\"c\":__embind_register_integer,\"b\":__embind_register_memory_view,\"m\":__embind_register_std_string,\"h\":__embind_register_std_wstring,\"D\":__embind_register_void,\"u\":__emval_as,\"e\":__emval_call_void_method,\"p\":__emval_decref,\"d\":__emval_get_method_caller,\"o\":__emval_incref,\"q\":__emval_run_destructors,\"A\":__emval_take_value,\"a\":_abort,\"F\":_clock,\"G\":_emscripten_log,\"s\":_emscripten_resize_heap,\"t\":_environ_get,\"v\":_environ_sizes_get,\"k\":_fd_close,\"y\":_fd_fdstat_get,\"z\":_fd_read,\"r\":_fd_seek,\"j\":_fd_write,\"E\":_gettimeofday,\"g\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _strlen=Module[\"_strlen\"]=function(){return(_strlen=Module[\"_strlen\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var dynCall_ijiii=Module[\"dynCall_ijiii\"]=function(){return(dynCall_ijiii=Module[\"dynCall_ijiii\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var dynCall_viiijj=Module[\"dynCall_viiijj\"]=function(){return(dynCall_viiijj=Module[\"dynCall_viiijj\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var dynCall_jij=Module[\"dynCall_jij\"]=function(){return(dynCall_jij=Module[\"dynCall_jij\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var dynCall_jii=Module[\"dynCall_jii\"]=function(){return(dynCall_jii=Module[\"dynCall_jii\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return(dynCall_jiji=Module[\"dynCall_jiji\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=82789;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 run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;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.deleteBuffer(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}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms == 1 second\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 10, // heart timeout\n timeout: 10, // second\n supportDblclickFullscreen: false,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: false, // 自动降级到 wasm 模式\n heartTimeoutReplay: false,// 心跳超时之后自动再播放。\n wasmDecodeErrorReplay: false, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\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 play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\n","import {MP4_CODECS} from \"../constant\";\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 aLink.href = URL.createObjectURL(content);\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(content);\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 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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '') {\n return \"0 KB/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 createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\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.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n aLink.dispatchEvent(evt);\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\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","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} 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 forceNoOffscreen: DEFAULT_PLAYER_OPTIONS.forceNoOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment\n },\n useOffscreen: function () {\n return !decoder.opt.forceNoOffscreen && 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 this.webglObj.render(w, h, Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize)))\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 var yuv = [Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize))];\n var outputArray = yuv.map(buffer => Uint8Array.from(buffer))\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 if (timestamp) {\n this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp)\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 + 1000) {\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 // 丢帧。。。\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 }\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();\n 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}\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","key","hasOwnProperty","thisProgram","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","ENVIRONMENT_IS_SHELL","window","importScripts","process","versions","node","scriptDirectory","locateFile","path","read_","readAsync","readBinary","nodeFS","nodePath","require$$0","dirname","__dirname","shell_read","filename","binary","require$$1","ret","buffer","Uint8Array","assert","length","replace","arguments_","slice","module","ex","ExitStatus","abort","read","f","data","readbuffer","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","onload","onerror","status","out","bind","err","quit_","STACK_ALIGN","alignMemory","size","factor","Math","ceil","warnOnce","shown","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","undefined","UTF8ArrayToString","heap","idx","maxBytesToRead","endIdx","endPtr","subarray","decode","str","u0","String","fromCharCode","u1","u2","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","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","writeAsciiToMemory","dontAddNull","HEAP8","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","wasmTable","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","preMain","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","runDependencies","dependenciesFulfilled","addRunDependency","id","removeRunDependency","callback","what","e","RuntimeError","hasPrefix","prefix","prototype","startsWith","dataURIPrefix","isDataURI","fileURIPrefix","isFileURI","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","result","instantiate","reason","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","get","jsStackTrace","Error","stack","toString","setErrNo","value","___errno_location","PATH","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","charAt","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","extname","paths","Array","call","arguments","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","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","prompt","readline","intArrayFromString","val","default_tty1_ops","mmapAlloc","alignedSize","_malloc","MEMFS","ops_table","mount","createNode","parent","name","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","max","oldContents","set","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","position","canOwn","whence","address","prot","flags","allocated","byteOffset","mmapFlags","mounts","devices","streams","nextInode","nameTable","currentPath","trackingDelegate","tracking","openFlags","READ","WRITE","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","object","isRead","isWrite","isAppend","newStream","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","apply","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","Object","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","readFile","encoding","writeFile","actualNumBytes","ArrayBuffer","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","constructor","code","staticInit","quit","fflush","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","stream_ops_read","createPreloadedFile","dontCreateFile","preFinish","Browser","fullname","processData","byteArray","finish","handled","plugin","asyncLoad","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","openRequest_onupgradeneeded","db","createObjectStore","onsuccess","openRequest_onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","putRequest_onsuccess","putRequest_onerror","loadFilesFromDB","getRequest","getRequest_onsuccess","getRequest_onerror","SYSCALLS","mappings","DEFAULT_POLLMASK","umask","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMkdir","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","get64","low","high","___sys_fcntl64","___sys_open","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","finalizationGroup","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","attachFinalizer","FinalizationGroup","iter","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","delayFunction","deletionQueue","flushPendingDeletes","ClassHandle_deleteLater","init_ClassHandle","registeredPointers","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","instancePrototype","getActualType","downcast","pureVirtualFunctions","upcastPointer","ptrClass","desiredClass","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","isSmartPointer","rawConstructor","isConst","sharingPolicy","clonedHandle","rawShare","__emval_register","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","downcastPointer","rv","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","pointeeType","actualType","registeredPointerRecord","toType","constPointerType","pointerType","dp","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","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","unboundTypeHandler","argTypes","new_","argumentList","dummy","craftInvokerFunction","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","configurable","v","defineProperty","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","primitiveType","minRange","maxRange","fromWireType","bitshift","isUnsignedType","__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","requireHandle","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","__emval_get_method_caller","retType","signatureName","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","_abort","_clock","reallyNegative","x","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","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","orig","originalPositionFor","source","substring","_emscripten_log_js","debug","_emscripten_log","abortOnCannotGrowMemory","requestedSize","_emscripten_resize_heap","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","_gettimeofday","_setTempRet0","$i","readMode","writeMode","stringy","u8array","numBytesWritten","calledRun","runCaller","run","doRun","setTimeout","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","y","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","DEMUX_TYPE","flv","m7s","DEFAULT_PLAYER_OPTIONS","videoBuffer","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","useMSE","useOffscreen","autoWasm","heartTimeoutReplay","wasmDecodeErrorReplay","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","yuv","getDelay","firstTimestamp","startTimestamp","resetDelay","_doDecode","loop","dropping","isIFrame","stopId","setInterval","clearInterval","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","event","msg","assign","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.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={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};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\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){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.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;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)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.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;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){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){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){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){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){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 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 INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;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(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){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)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var 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={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"I\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"M\"];addOnInit(Module[\"asm\"][\"J\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);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(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}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){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}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 setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(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(\"randomDevice\")}}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.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(function(p){return!!p}),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:function(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 mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size=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);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!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:function(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:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(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:function(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:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:function(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:function(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:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=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:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};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}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(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:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(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:function(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){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(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){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:function(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(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(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:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i\"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;ithis.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=function(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);if(typeof Uint8Array!=\"undefined\")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(function(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(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function 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);if(contents.slice){for(var i=0;i>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)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},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 node;var lookup=FS.lookupPath(path,{follow:true});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},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){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},get64:function(low,high){return low}};function ___sys_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.open(stream.path,stream.flags,0,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 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14: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))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}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}else{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>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 finalizationGroup=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 attachFinalizer(handle){if(\"undefined\"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn(\"object already deleted: \"+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.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}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}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(){}var registeredPointers={};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_register(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 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)}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}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 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){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.indexOf(\"j\")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;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);var args=[rawConstructor];var destructors=[];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]=function unboundTypeHandler(){throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+\" called with \"+arguments.length+\" arguments, expected \"+(argCount-1))}destructors.length=0;args.length=argCount;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;i4&&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>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=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf(\"unsigned\")!=-1;registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":function(destructors,value){if(typeof value!==\"number\"&&typeof value!==\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}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+\"]!\")}return isUnsignedType?value>>>0:value|0},\"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;i>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;i>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 requireHandle(handle){if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value}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=requireHandle(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=__emval_register(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)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(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}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 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_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return __emval_register(v)}function _abort(){abort()}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){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{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,1).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize,1).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].indexOf(\".\")!=-1&&(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].indexOf(\"_emscripten_\")>=0)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 abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}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){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){try{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}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{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}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}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))abort(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))abort(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))abort(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))abort(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))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _setTempRet0($i){setTempRet0($i|0)}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();embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();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}var asmLibraryArg={\"x\":___sys_fcntl64,\"w\":___sys_open,\"C\":__embind_register_bool,\"n\":__embind_register_class,\"i\":__embind_register_class_constructor,\"f\":__embind_register_class_function,\"H\":__embind_register_class_property,\"B\":__embind_register_emval,\"l\":__embind_register_float,\"c\":__embind_register_integer,\"b\":__embind_register_memory_view,\"m\":__embind_register_std_string,\"h\":__embind_register_std_wstring,\"D\":__embind_register_void,\"u\":__emval_as,\"e\":__emval_call_void_method,\"p\":__emval_decref,\"d\":__emval_get_method_caller,\"o\":__emval_incref,\"q\":__emval_run_destructors,\"A\":__emval_take_value,\"a\":_abort,\"F\":_clock,\"G\":_emscripten_log,\"s\":_emscripten_resize_heap,\"t\":_environ_get,\"v\":_environ_sizes_get,\"k\":_fd_close,\"y\":_fd_fdstat_get,\"z\":_fd_read,\"r\":_fd_seek,\"j\":_fd_write,\"E\":_gettimeofday,\"g\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _strlen=Module[\"_strlen\"]=function(){return(_strlen=Module[\"_strlen\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var dynCall_ijiii=Module[\"dynCall_ijiii\"]=function(){return(dynCall_ijiii=Module[\"dynCall_ijiii\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var dynCall_viiijj=Module[\"dynCall_viiijj\"]=function(){return(dynCall_viiijj=Module[\"dynCall_viiijj\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var dynCall_jij=Module[\"dynCall_jij\"]=function(){return(dynCall_jij=Module[\"dynCall_jij\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var dynCall_jii=Module[\"dynCall_jii\"]=function(){return(dynCall_jii=Module[\"dynCall_jii\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return(dynCall_jiji=Module[\"dynCall_jiji\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=82789;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 run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;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.deleteBuffer(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}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms == 1 second\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: false, // loading timeout replay\n heartTimeoutReplay: false,// heart timeout replay。\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\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 play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\n","import {MP4_CODECS} from \"../constant\";\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 aLink.href = URL.createObjectURL(content);\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(content);\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 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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '') {\n return \"0 KB/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 createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\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.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n aLink.dispatchEvent(evt);\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\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","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} 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 forceNoOffscreen: DEFAULT_PLAYER_OPTIONS.forceNoOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment\n },\n useOffscreen: function () {\n return !decoder.opt.forceNoOffscreen && 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 this.webglObj.render(w, h, Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize)))\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 var yuv = [Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize))];\n var outputArray = yuv.map(buffer => Uint8Array.from(buffer))\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 if (timestamp) {\n this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp)\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 + 1000) {\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 // 丢帧。。。\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 }\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();\n 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}\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","key","hasOwnProperty","thisProgram","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","ENVIRONMENT_IS_SHELL","window","importScripts","process","versions","node","scriptDirectory","locateFile","path","read_","readAsync","readBinary","nodeFS","nodePath","require$$0","dirname","__dirname","shell_read","filename","binary","require$$1","ret","buffer","Uint8Array","assert","length","replace","arguments_","slice","module","ex","ExitStatus","abort","read","f","data","readbuffer","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","onload","onerror","status","out","bind","err","quit_","STACK_ALIGN","alignMemory","size","factor","Math","ceil","warnOnce","shown","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","undefined","UTF8ArrayToString","heap","idx","maxBytesToRead","endIdx","endPtr","subarray","decode","str","u0","String","fromCharCode","u1","u2","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","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","writeAsciiToMemory","dontAddNull","HEAP8","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","wasmTable","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","preMain","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","runDependencies","dependenciesFulfilled","addRunDependency","id","removeRunDependency","callback","what","e","RuntimeError","hasPrefix","prefix","prototype","startsWith","dataURIPrefix","isDataURI","fileURIPrefix","isFileURI","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","result","instantiate","reason","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","get","jsStackTrace","Error","stack","toString","setErrNo","value","___errno_location","PATH","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","charAt","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","extname","paths","Array","call","arguments","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","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","prompt","readline","intArrayFromString","val","default_tty1_ops","mmapAlloc","alignedSize","_malloc","MEMFS","ops_table","mount","createNode","parent","name","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","max","oldContents","set","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","position","canOwn","whence","address","prot","flags","allocated","byteOffset","mmapFlags","mounts","devices","streams","nextInode","nameTable","currentPath","trackingDelegate","tracking","openFlags","READ","WRITE","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","object","isRead","isWrite","isAppend","newStream","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","apply","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","Object","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","readFile","encoding","writeFile","actualNumBytes","ArrayBuffer","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","constructor","code","staticInit","quit","fflush","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","stream_ops_read","createPreloadedFile","dontCreateFile","preFinish","Browser","fullname","processData","byteArray","finish","handled","plugin","asyncLoad","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","openRequest_onupgradeneeded","db","createObjectStore","onsuccess","openRequest_onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","putRequest_onsuccess","putRequest_onerror","loadFilesFromDB","getRequest","getRequest_onsuccess","getRequest_onerror","SYSCALLS","mappings","DEFAULT_POLLMASK","umask","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMkdir","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","get64","low","high","___sys_fcntl64","___sys_open","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","finalizationGroup","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","attachFinalizer","FinalizationGroup","iter","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","delayFunction","deletionQueue","flushPendingDeletes","ClassHandle_deleteLater","init_ClassHandle","registeredPointers","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","instancePrototype","getActualType","downcast","pureVirtualFunctions","upcastPointer","ptrClass","desiredClass","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","isSmartPointer","rawConstructor","isConst","sharingPolicy","clonedHandle","rawShare","__emval_register","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","downcastPointer","rv","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","pointeeType","actualType","registeredPointerRecord","toType","constPointerType","pointerType","dp","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","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","unboundTypeHandler","argTypes","new_","argumentList","dummy","craftInvokerFunction","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","configurable","v","defineProperty","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","primitiveType","minRange","maxRange","fromWireType","bitshift","isUnsignedType","__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","requireHandle","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","__emval_get_method_caller","retType","signatureName","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","_abort","_clock","reallyNegative","x","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","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","orig","originalPositionFor","source","substring","_emscripten_log_js","debug","_emscripten_log","abortOnCannotGrowMemory","requestedSize","_emscripten_resize_heap","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","_gettimeofday","_setTempRet0","$i","readMode","writeMode","stringy","u8array","numBytesWritten","calledRun","runCaller","run","doRun","setTimeout","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","y","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","DEMUX_TYPE","flv","m7s","DEFAULT_PLAYER_OPTIONS","videoBuffer","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","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","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","yuv","getDelay","firstTimestamp","startTimestamp","resetDelay","_doDecode","loop","dropping","isIFrame","stopId","setInterval","clearInterval","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","event","msg","assign","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file diff --git a/demo/public/jessibuca.js b/demo/public/jessibuca.js index c1b69b04..5a8750be 100644 --- a/demo/public/jessibuca.js +++ b/demo/public/jessibuca.js @@ -26,10 +26,18 @@ // 快捷键 loadingTimeout: 10, // loading timeout - heartTimeout: 10, + heartTimeout: 5, // heart timeout timeout: 10, // second + loadingTimeoutReplay: false, + // loading timeout replay + heartTimeoutReplay: false, + // heart timeout replay。 + loadingTimeoutReplayTimes: 3, + // loading timeout replay fail times + heartTimeoutReplayTimes: 3, + // heart timeout replay fail times supportDblclickFullscreen: false, showBandwidth: false, // @@ -65,11 +73,9 @@ // useOffscreen: false, // - autoWasm: false, + autoWasm: true, // 自动降级到 wasm 模式 - heartTimeoutReplay: false, - // 心跳超时之后自动再播放。 - wasmDecodeErrorReplay: false, + wasmDecodeErrorReplay: true, // 解码失败重新播放。 openWebglAlignment: false // https://github.com/langhuihui/jessibuca/issues/152 @@ -319,7 +325,7 @@ } destroy() { - this.master.debug.log(`Events`, 'destroy'); + this.master.debug && this.master.debug.log(`Events`, 'destroy'); this.destroys.forEach(event => event()); } @@ -11632,7 +11638,8 @@ this._opt = _opt; this.$container = $container; - this.href = null; + this._loadingTimeoutReplayTimes = 0; + this._heartTimeoutReplayTimes = 0; this.events = new Events(this); this._initPlayer($container, _opt); @@ -11643,8 +11650,20 @@ destroy() { - this.player.destroy(); - this.player = null; + if (this.events) { + this.events.destroy(); + this.events = null; + } + + if (this.player) { + this.player.destroy(); + this.player = null; + } + + this.$container = null; + this._opt = null; + this._loadingTimeoutReplayTimes = 0; + this._heartTimeoutReplayTimes = 0; this.off(); } @@ -11928,10 +11947,25 @@ }); }); } - }); + }); // 监听 delay timeout + this.player.once(EVENTS.delayTimeout, () => { - if (this.player._opt.heartTimeoutReplay) { - this.play(url).then(() => {// resolve(); + if (this.player._opt.heartTimeoutReplay && this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes) { + this._heartTimeoutReplayTimes += 1; + this.play(url).then(() => { + // resolve(); + this._heartTimeoutReplayTimes = 0; + }).catch(() => {// reject(); + }); + } + }); // 监听 loading timeout + + this.player.once(EVENTS.loadingTimeout, () => { + if (this.player._opt.loadingTimeoutReplay && this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes) { + this._loadingTimeoutReplayTimes += 1; + this.play(url).then(() => { + // resolve(); + this._loadingTimeoutReplayTimes = 0; }).catch(() => {// reject(); }); } diff --git a/demo/public/jessibuca.js.map b/demo/public/jessibuca.js.map index 78743aa3..1023bc68 100644 --- a/demo/public/jessibuca.js.map +++ b/demo/public/jessibuca.js.map @@ -1 +1 @@ -{"version":3,"file":"jessibuca.js","sources":["../../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/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/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/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/utils/h265-sps-parser.js","../../src/utils/h265.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms == 1 second\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 10, // heart timeout\n timeout: 10, // second\n supportDblclickFullscreen: false,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: false, // 自动降级到 wasm 模式\n heartTimeoutReplay: false,// 心跳超时之后自动再播放。\n wasmDecodeErrorReplay: false, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\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 play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt.debug) {\n console.log(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt.debug) {\n console.warn(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n if (master._opt.debug) {\n console.error(`Jessibuca: [${name}]`, ...args);\n }\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.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} from \"../constant\";\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 aLink.href = URL.createObjectURL(content);\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(content);\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 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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '') {\n return \"0 KB/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 createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\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.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n aLink.dispatchEvent(evt);\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\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","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = () => {\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 player.webFullscreen = true;\n });\n\n } catch (e) {\n player.webFullscreen = true;\n }\n } else {\n try {\n screenfull.exit().then(() => {\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('webmediaplayer-fullscreen-web')\n const {clientHeight: bodyHeight, clientWidth: bodyWidth} = document.body;\n const {clientHeight: playerHeight, clientWidth: playerWidth} = player.video.$videoElement;\n const bodyRatio = bodyWidth / bodyHeight;\n const playerRatio = playerWidth / playerHeight;\n const needSpin = bodyRatio < playerRatio;\n if (needSpin) {\n const scale = Math.min(bodyHeight / playerWidth, bodyWidth / playerHeight);\n player.video.$videoElement.style.transform = `rotate(90deg) scale(${scale},${scale})`;\n }\n\n } else {\n player.$container.classList.remove('webmediaplayer-fullscreen-web')\n player.video.$videoElement.style.transform = null;\n }\n })\n\n //\n player.on(EVENTS.resize, () => {\n player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\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.deleteBuffer(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 //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[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\n}\n","import Emitter from \"../utils/emitter\";\nimport {createContextGL, createEmptyImageBitmap, dataURLToFile, downloadImg, now, supportOffscreen} 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\";\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 destroy() {\n if (this.contextGl) {\n this.contextGl = null;\n }\n\n if (this.context2D) {\n this.context2D = null;\n }\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.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n\n this.player.$container.removeChild(this.$videoElement);\n this.init = false;\n this.off();\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\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 this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\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 const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\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 const width = this.player.width;\n let height = this.player.height;\n if (option.hasControl && !option.controlAutoHide) {\n height -= CONTROL_HEIGHT;\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, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n $videoElement.muted = true;\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n player.$container.appendChild($videoElement);\n this.$videoElement = $videoElement;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', 'canplay');\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n this.player.emit(EVENTS.videoWaiting);\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n })\n\n this.player.debug.log('Video', 'init');\n\n }\n\n destroy() {\n this.player.$container.removeChild(this.$videoElement);\n this.$videoElement = null;\n this.init = false;\n this.off();\n this.player.debug.log('Video', 'destroy');\n }\n\n play() {\n // this.$videoElement.autoplay = true;\n this.$videoElement.play();\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 = document.createElement('canvas');\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n const context = canvas.getContext('2d');\n context.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(SCREENSHOT_TYPE[format] || SCREENSHOT_TYPE.png, encoderOptions);\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\n }\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n resize() {\n this.$videoElement.width = this.player.width;\n this.$videoElement.height = (this.player._opt.hasControl && !this.player._opt.controlAutoHide) ? this.player.height - CONTROL_HEIGHT : this.player.height;\n const option = this.player._opt;\n let objectFill = 'contain';\n const rotate = option.rotate;\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 }\n\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) {\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\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\n destroy() {\n this.closeAudio();\n this.audioContext.close();\n this.audioContext = null;\n this.gainNode = null;\n this.init = false;\n this.hasAudio = false;\n this.playing = false;\n\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.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\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 }\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 || this.isStateSuspended();\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) {\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.audioEnabled(false);\n this.clear();\n } else {\n if (this.isMute) {\n this.player.emit(EVENTS.mute, flag);\n }\n this.setVolume(0.5);\n this.audioEnabled(true);\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 this.gainNode.gain.value = volume;\n this.gainNode.gain.setValueAtTime(volume, this.audioContext.currentTime);\n this.player.emit(EVENTS.volumechange, this.player.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\n}\n","import AudioContextLoader from \"./audioContextLoader\";\nimport AudioLoader from \"./audioLoader\";\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, 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 destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n fetchStream(url) {\n const {demux} = this.player;\n this.player._times.streamStart = now();\n fetch(url, {signal: this.abortController.signal}).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 // 这边会报用户 aborted a request 错误。\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n this.abort();\n })\n }\n fetchNext();\n }).catch((e) => {\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\n destroy() {\n if (this.socket) {\n this.socket.close();\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 fetchStream(url) {\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} from \"../utils\";\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 = 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', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.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 downloadRecord(this.recorder.getBlob(), this.fileName, this.fileType);\n this._reset();\n this.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 {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 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 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.emit(EVENTS.error, EVENTS_ERROR.wasmDecodeError);\n this.player.emit(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 forceNoOffscreen: this.player._opt.forceNoOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\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 && !this.player._opt.useOffscreen) {\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 {MEDIA_TYPE} from \"../constant\";\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 }\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 this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp)\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 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) {\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 + 1000) {\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 while (this.bufferList.length) {\n data = this.bufferList[0]\n\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 break;\n }\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame) {\n const player = this.player;\n let options = {\n ts: ts,\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);\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 payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\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 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 isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame);\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 }\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 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 const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts, isIframe)\n }\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","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE} from \"../constant\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = 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 this.decoder.close();\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = 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 // release resource\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close()\n } else {\n videoFrame.destroy()\n }\n }, 100)\n }\n\n handleError(error) {\n this.player.debug.log('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.decoder.configure(config);\n this.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 this.decoder.decode(chunk);\n }\n }\n\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
\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, '$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 {EVENTS} from \"../constant\";\nimport {bpsSize, getStyle, 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 }\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 try {\n const screenfullChange = () => {\n setStyle(control.$fullscreenExit, 'display', player.fullscreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', player.fullscreen ? 'none' : 'flex');\n // control.autoSize();\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.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(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.$fullscreen, 'display', flag ? 'flex' : 'none');\n\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\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, 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 const percentage =\n clamp(panelBottom - event.y - 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 })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\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 player.lastVolume = player.volume;\n player.volume = 0;\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.$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 }\n })\n\n proxy(player.$container, 'mouseout', () => {\n setStyle(control.$controls, 'display', 'none');\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\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n observer(player, this);\n property(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 this.player.$container.removeChild(this.$poster);\n }\n if (this.$loading) {\n this.player.$container.removeChild(this.$loading);\n }\n if (this.$controls) {\n this.player.$container.removeChild(this.$controls);\n }\n\n if(this.$playBig){\n this.player.$container.removeChild(this.$playBig);\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\n}\n","export 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', () => {\n player.fullscreen = !player.fullscreen;\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","/*\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;\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;\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;\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","class SPSParser {\n static parseSPS(uint8array) {\n\n }\n}\n\nexport default SPSParser\n","import {H265_NAL_TYPE} from \"../constant\";\nimport SPSParser from \"./h265-sps-parser\";\n\nexport function parseHEVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n meta.videoType = 'hevc'\n let offset = 28 - 5;\n //\n const vpsTag = arrayBuffer[offset];\n\n if (vpsTag !== H265_NAL_TYPE.vps) {\n return meta;\n }\n\n offset += 2;\n offset += 1;\n const vpsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const vpsData = arrayBuffer.slice(offset, (offset + vpsLength));\n console.log(Uint8Array.from(vpsData));\n offset += vpsLength;\n\n const spsTag = arrayBuffer[offset]\n if (spsTag !== H265_NAL_TYPE.sps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const spsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n\n offset += 2;\n const spsData = arrayBuffer.slice(offset, (offset + spsLength))\n console.log(Uint8Array.from(spsData));\n\n offset += spsLength;\n\n const ppsTag = arrayBuffer[offset];\n\n if (ppsTag !== H265_NAL_TYPE.pps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const ppsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const ppsData = arrayBuffer.slice(offset, (offset + ppsLength))\n console.log(Uint8Array.from(ppsData));\n\n let sps = Uint8Array.from(spsData);\n let config = SPSParser.parseSPS(sps);\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\n return meta;\n}\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 {parseHEVCDecoderConfigurationRecord} from \"../utils/h265\";\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.bufferList = [];\n this.dropping = 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.bufferList = [];\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.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return 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.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe) {\n const player = this.player;\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 this._decodeVideo(payload, ts, isIframe);\n }\n }\n\n _doDecode() {\n const bufferItem = this.bufferList.shift();\n if (bufferItem) {\n this._decodeVideo(bufferItem.payload, bufferItem.ts, bufferItem.isIframe);\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n if (videoCodec === VIDEO_ENC_CODE.h264) {\n config = parseAVCDecoderConfigurationRecord(data)\n } else if (videoCodec === VIDEO_ENC_CODE.h265) {\n config = parseHEVCDecoderConfigurationRecord(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, ts, isIframe) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n let cts = 0;\n let dts = ts;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n\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 > 1000) {\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: ts, buf: player.demux.delay})\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\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 this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n this.sourceBuffer.appendBuffer(buffer);\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(false);\n }\n }\n }\n\n stop() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n }\n }\n this.endOfStream();\n }\n\n dropSourceBuffer(flag) {\n const video = this.player.video;\n const $video = video.$videoElement;\n this.dropping = flag;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\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 console.error(e)\n }\n }\n }\n\n endOfStream() {\n if (this.isStateOpen) {\n this.mediaSource.endOfStream();\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,\n isFullScreen,\n isNotEmpty,\n now,\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\";\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\n\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\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 } else if (this._opt.useWCS) {\n\n }\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\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\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n }\n\n //\n this.control = new Control(this);\n\n this.keepScreenOn = new NoSleep(this);\n\n\n events(this);\n observer(this);\n\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 this.debug.log('Player options', this._opt);\n }\n\n\n destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n 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 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 //\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 this.emit(EVENTS.fullscreen, value);\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\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 this.audio && this.audio.setVolume(value);\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 (this.playing) {\n if (value) {\n this.recorder.startRecord();\n } else {\n this.recorder.stopRecordAndSave();\n }\n }\n }\n\n get recording() {\n return this.recorder && this.recorder.recording;\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\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.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\n this.once(EVENTS.decoderWorkerInit, () => {\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) {\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\n this.enableWakeLock();\n\n this.stream.fetchStream(url);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n reject(error)\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n reject(error)\n })\n\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n if (this._opt.useMSE) {\n this.video.play();\n }\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.clearView();\n resolve()\n })\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\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n // release audio buffer\n this.audio && this.audio.pause();\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) {\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 this.pause(false).then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }, this._opt.heartTimeout * 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 this.pause(false).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 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.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n 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","import Player from './player';\nimport Events from \"./utils/events\";\nimport {DEMUX_TYPE, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS, PLAYER_PLAY_PROTOCOL, SCALE_MODE_TYPE} from \"./constant\";\nimport {isEmpty, isNotEmpty, supportWCS, uuid16} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\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\n $container.classList.add('jessibuca-container');\n\n delete _opt.container;\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.href = null;\n this.events = new Events(this);\n this._initPlayer($container, _opt);\n }\n\n /**\n *\n */\n destroy() {\n this.player.destroy();\n this.player = null;\n this.off();\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n const _options = Object.assign(this._opt, options);\n this._initPlayer(this.$container, _options);\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 * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n isDebug: !!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 this.player.pause();\n }\n\n /**\n *\n */\n close() {\n // clear url\n this._opt.url = '';\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 * @returns {Promise}\n */\n play(url) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject();\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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n return this._play(url);\n }).catch(() => {\n reject();\n })\n }\n } else {\n return this._play(url);\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @returns {Promise}\n * @private\n */\n _play(url) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\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.mediaSourceH265NotSupport, () => {\n this.close().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n }\n });\n })\n\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.close().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n\n // 解码报错。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.close().then(() => {\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n }\n })\n\n this.player.once(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay) {\n this.play(url).then(() => {\n // resolve();\n }).catch(() => {\n // reject();\n });\n }\n })\n\n if (this.hasLoaded()) {\n this.player.play(url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\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, 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 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.playing;\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\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","DEMUX_TYPE","flv","m7s","DEFAULT_PLAYER_OPTIONS","videoBuffer","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","useMSE","useOffscreen","autoWasm","heartTimeoutReplay","wasmDecodeErrorReplay","openWebglAlignment","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","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","mediaSourceH265NotSupport","wasmDecodeError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","H265_NAL_TYPE","vps","sps","pps","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","FILE_SUFFIX","mp4","webm","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","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","downloadImg","content","fileName","aLink","document","createElement","href","URL","createObjectURL","click","setTimeout","revokeObjectURL","isIOS","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","downloadRecord","suffix","window","UA","navigator","userAgent","toLowerCase","test","supportWCS","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","toString","codec","description","isFullScreen","mozIsFullScreen","webkitIsFullScreen","bpsSize","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","isEmpty","undefined","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","screenfullChange","emit","screenfull","on","events","off","loaded","request","then","catch","exit","classList","add","bodyHeight","bodyWidth","body","playerHeight","playerWidth","$videoElement","bodyRatio","playerRatio","needSpin","scale","transform","remove","ignoreList","includes","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","i","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","v","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","updateVideoInfo","encTypeCode","encType","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","removeChild","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","clearView","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","resizeWidth","resizeHeight","wScale","hScale","VideoLoader","muted","$video","canvas","videoWidth","videoHeight","context","objectFill","objectFit","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isPlaying","isMute","isStateSuspended","volume","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","isNaN","setValueAtTime","currentTime","disconnect","state","resume","suspend","isStateRunning","Audio","FetchLoader","abortController","AbortController","streamRate","rate","abort","fetchStream","demux","_times","signal","res","reader","getReader","fetchNext","read","done","byteLength","dispatch","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","global","RecordRTCLoader","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","indexOf","JSON","stringify","decodeVideo","arrayBuffer","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","resetDelay","_loop","payload","_doDecoderDecode","_doDecode","pushBuffer","webcodecsDecoder","mseDecoder","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp","ArrayBuffer","tmp8","tmp32","Uint32Array","t","abps","vbps","need","next","combine","set","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","isIframe","Demux","WebcodecsDecoder","hasInit","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","setAttribute","display","overflow","pointerEvents","zIndex","contentDocument","defaultView","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","parseInt","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$record","$recordStop","$play","$pause","$screenshot","$speed","bps","$controls","volumeChangeFromEvent","bottom","panelBottom","composedPath","isFocus","stopPropagation","$volume","$volumePanelWrap","lastVolume","isVolumeDroging","addHotkey","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","preventDefault","Control","template","observer","property","hotkey","autoSize","padding","canvasWidth","canvasHeight","canvasRatio","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","prototype","call","arguments","arrayCount","offset","generateInitSegment","meta","timescale","duration","trackId","id","presentWidth","presentHeight","xmhd","videoType","channelCount","audioSampleRate","configSize","concat","avcc","codecWidth","codecHeight","track","baseMediaDecodeTime","sequenceNumber","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","cts","isNonSync","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","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","version","avcProfile","_naluLengthSize","spsCount","getUint16","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","ppsCount","parseHEVCDecoderConfigurationRecord","vpsTag","vpsLength","vpsData","from","spsTag","spsLength","spsData","ppsTag","ppsLength","ppsData","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","stop","readyState","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","_decodeVideo","metaData","metaBox","appendBuffer","bytes","dts","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","endOfStream","dropSourceBuffer","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","random","dataURI","isEnabled","wakeLock","err","disable","hidden","location","Promise","resolve","playPromise","release","Player","container","assign","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","releaseWakeLock","resetStats","contains","updateOption","reject","checkLoadingTimeout","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","clearTimeout","_nowTime","Jessibuca","ERROR","TIMEOUT","Error","_initPlayer","_bindEvents","_resetPlayer","_options","setDebug","isDebug","cancelMute","audioResume","time","setScaleMode","_play","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jessibuca.js","sources":["../../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/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/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/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/utils/h265-sps-parser.js","../../src/utils/h265.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms == 1 second\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: false, // loading timeout replay\n heartTimeoutReplay: false,// heart timeout replay。\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\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 play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt.debug) {\n console.log(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt.debug) {\n console.warn(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n if (master._opt.debug) {\n console.error(`Jessibuca: [${name}]`, ...args);\n }\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} from \"../constant\";\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 aLink.href = URL.createObjectURL(content);\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(content);\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 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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '') {\n return \"0 KB/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 createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\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.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n aLink.dispatchEvent(evt);\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\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","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = () => {\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 player.webFullscreen = true;\n });\n\n } catch (e) {\n player.webFullscreen = true;\n }\n } else {\n try {\n screenfull.exit().then(() => {\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('webmediaplayer-fullscreen-web')\n const {clientHeight: bodyHeight, clientWidth: bodyWidth} = document.body;\n const {clientHeight: playerHeight, clientWidth: playerWidth} = player.video.$videoElement;\n const bodyRatio = bodyWidth / bodyHeight;\n const playerRatio = playerWidth / playerHeight;\n const needSpin = bodyRatio < playerRatio;\n if (needSpin) {\n const scale = Math.min(bodyHeight / playerWidth, bodyWidth / playerHeight);\n player.video.$videoElement.style.transform = `rotate(90deg) scale(${scale},${scale})`;\n }\n\n } else {\n player.$container.classList.remove('webmediaplayer-fullscreen-web')\n player.video.$videoElement.style.transform = null;\n }\n })\n\n //\n player.on(EVENTS.resize, () => {\n player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\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.deleteBuffer(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 //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[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\n}\n","import Emitter from \"../utils/emitter\";\nimport {createContextGL, createEmptyImageBitmap, dataURLToFile, downloadImg, now, supportOffscreen} 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\";\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 destroy() {\n if (this.contextGl) {\n this.contextGl = null;\n }\n\n if (this.context2D) {\n this.context2D = null;\n }\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.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n\n this.player.$container.removeChild(this.$videoElement);\n this.init = false;\n this.off();\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\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 this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\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 const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\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 const width = this.player.width;\n let height = this.player.height;\n if (option.hasControl && !option.controlAutoHide) {\n height -= CONTROL_HEIGHT;\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, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n $videoElement.muted = true;\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n player.$container.appendChild($videoElement);\n this.$videoElement = $videoElement;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', 'canplay');\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n this.player.emit(EVENTS.videoWaiting);\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n })\n\n this.player.debug.log('Video', 'init');\n\n }\n\n destroy() {\n this.player.$container.removeChild(this.$videoElement);\n this.$videoElement = null;\n this.init = false;\n this.off();\n this.player.debug.log('Video', 'destroy');\n }\n\n play() {\n // this.$videoElement.autoplay = true;\n this.$videoElement.play();\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 = document.createElement('canvas');\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n const context = canvas.getContext('2d');\n context.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(SCREENSHOT_TYPE[format] || SCREENSHOT_TYPE.png, encoderOptions);\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\n }\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n resize() {\n this.$videoElement.width = this.player.width;\n this.$videoElement.height = (this.player._opt.hasControl && !this.player._opt.controlAutoHide) ? this.player.height - CONTROL_HEIGHT : this.player.height;\n const option = this.player._opt;\n let objectFill = 'contain';\n const rotate = option.rotate;\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 }\n\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) {\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\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\n destroy() {\n this.closeAudio();\n this.audioContext.close();\n this.audioContext = null;\n this.gainNode = null;\n this.init = false;\n this.hasAudio = false;\n this.playing = false;\n\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.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\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 }\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 || this.isStateSuspended();\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) {\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.audioEnabled(false);\n this.clear();\n } else {\n if (this.isMute) {\n this.player.emit(EVENTS.mute, flag);\n }\n this.setVolume(0.5);\n this.audioEnabled(true);\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 this.gainNode.gain.value = volume;\n this.gainNode.gain.setValueAtTime(volume, this.audioContext.currentTime);\n this.player.emit(EVENTS.volumechange, this.player.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\n}\n","import AudioContextLoader from \"./audioContextLoader\";\nimport AudioLoader from \"./audioLoader\";\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, 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 destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n fetchStream(url) {\n const {demux} = this.player;\n this.player._times.streamStart = now();\n fetch(url, {signal: this.abortController.signal}).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 // 这边会报用户 aborted a request 错误。\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n this.abort();\n })\n }\n fetchNext();\n }).catch((e) => {\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\n destroy() {\n if (this.socket) {\n this.socket.close();\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 fetchStream(url) {\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} from \"../utils\";\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 = 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', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.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 downloadRecord(this.recorder.getBlob(), this.fileName, this.fileType);\n this._reset();\n this.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 {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 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 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.emit(EVENTS.error, EVENTS_ERROR.wasmDecodeError);\n this.player.emit(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 forceNoOffscreen: this.player._opt.forceNoOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\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 && !this.player._opt.useOffscreen) {\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 {MEDIA_TYPE} from \"../constant\";\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 }\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 this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp)\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 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) {\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 + 1000) {\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 while (this.bufferList.length) {\n data = this.bufferList[0]\n\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 break;\n }\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame) {\n const player = this.player;\n let options = {\n ts: ts,\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);\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 payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\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 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 isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame);\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 }\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 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 const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts, isIframe)\n }\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","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE} from \"../constant\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = 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 this.decoder.close();\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = 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 // release resource\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close()\n } else {\n videoFrame.destroy()\n }\n }, 100)\n }\n\n handleError(error) {\n this.player.debug.log('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.decoder.configure(config);\n this.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 this.decoder.decode(chunk);\n }\n }\n\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
\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, '$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 {EVENTS} from \"../constant\";\nimport {bpsSize, getStyle, 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 }\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 try {\n const screenfullChange = () => {\n setStyle(control.$fullscreenExit, 'display', player.fullscreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', player.fullscreen ? 'none' : 'flex');\n // control.autoSize();\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.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(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.$fullscreen, 'display', flag ? 'flex' : 'none');\n\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\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, 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 const percentage =\n clamp(panelBottom - event.y - 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 })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\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 player.lastVolume = player.volume;\n player.volume = 0;\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.$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 }\n })\n\n proxy(player.$container, 'mouseout', () => {\n setStyle(control.$controls, 'display', 'none');\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\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n observer(player, this);\n property(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 this.player.$container.removeChild(this.$poster);\n }\n if (this.$loading) {\n this.player.$container.removeChild(this.$loading);\n }\n if (this.$controls) {\n this.player.$container.removeChild(this.$controls);\n }\n\n if(this.$playBig){\n this.player.$container.removeChild(this.$playBig);\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\n}\n","export 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', () => {\n player.fullscreen = !player.fullscreen;\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","/*\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;\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;\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;\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","class SPSParser {\n static parseSPS(uint8array) {\n\n }\n}\n\nexport default SPSParser\n","import {H265_NAL_TYPE} from \"../constant\";\nimport SPSParser from \"./h265-sps-parser\";\n\nexport function parseHEVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n meta.videoType = 'hevc'\n let offset = 28 - 5;\n //\n const vpsTag = arrayBuffer[offset];\n\n if (vpsTag !== H265_NAL_TYPE.vps) {\n return meta;\n }\n\n offset += 2;\n offset += 1;\n const vpsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const vpsData = arrayBuffer.slice(offset, (offset + vpsLength));\n console.log(Uint8Array.from(vpsData));\n offset += vpsLength;\n\n const spsTag = arrayBuffer[offset]\n if (spsTag !== H265_NAL_TYPE.sps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const spsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n\n offset += 2;\n const spsData = arrayBuffer.slice(offset, (offset + spsLength))\n console.log(Uint8Array.from(spsData));\n\n offset += spsLength;\n\n const ppsTag = arrayBuffer[offset];\n\n if (ppsTag !== H265_NAL_TYPE.pps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const ppsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const ppsData = arrayBuffer.slice(offset, (offset + ppsLength))\n console.log(Uint8Array.from(ppsData));\n\n let sps = Uint8Array.from(spsData);\n let config = SPSParser.parseSPS(sps);\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\n return meta;\n}\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 {parseHEVCDecoderConfigurationRecord} from \"../utils/h265\";\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.bufferList = [];\n this.dropping = 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.bufferList = [];\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.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return 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.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe) {\n const player = this.player;\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 this._decodeVideo(payload, ts, isIframe);\n }\n }\n\n _doDecode() {\n const bufferItem = this.bufferList.shift();\n if (bufferItem) {\n this._decodeVideo(bufferItem.payload, bufferItem.ts, bufferItem.isIframe);\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n if (videoCodec === VIDEO_ENC_CODE.h264) {\n config = parseAVCDecoderConfigurationRecord(data)\n } else if (videoCodec === VIDEO_ENC_CODE.h265) {\n config = parseHEVCDecoderConfigurationRecord(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, ts, isIframe) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n let cts = 0;\n let dts = ts;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n\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 > 1000) {\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: ts, buf: player.demux.delay})\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\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 this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n this.sourceBuffer.appendBuffer(buffer);\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(false);\n }\n }\n }\n\n stop() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n }\n }\n this.endOfStream();\n }\n\n dropSourceBuffer(flag) {\n const video = this.player.video;\n const $video = video.$videoElement;\n this.dropping = flag;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\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 console.error(e)\n }\n }\n }\n\n endOfStream() {\n if (this.isStateOpen) {\n this.mediaSource.endOfStream();\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,\n isFullScreen,\n isNotEmpty,\n now,\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\";\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\n\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\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 } else if (this._opt.useWCS) {\n\n }\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\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\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n }\n\n //\n this.control = new Control(this);\n\n this.keepScreenOn = new NoSleep(this);\n\n\n events(this);\n observer(this);\n\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 this.debug.log('Player options', this._opt);\n }\n\n\n destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n 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 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 //\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 this.emit(EVENTS.fullscreen, value);\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\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 this.audio && this.audio.setVolume(value);\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 (this.playing) {\n if (value) {\n this.recorder.startRecord();\n } else {\n this.recorder.stopRecordAndSave();\n }\n }\n }\n\n get recording() {\n return this.recorder && this.recorder.recording;\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\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.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\n this.once(EVENTS.decoderWorkerInit, () => {\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) {\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\n this.enableWakeLock();\n\n this.stream.fetchStream(url);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n reject(error)\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n reject(error)\n })\n\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n if (this._opt.useMSE) {\n this.video.play();\n }\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.clearView();\n resolve()\n })\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\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n // release audio buffer\n this.audio && this.audio.pause();\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) {\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 this.pause(false).then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }, this._opt.heartTimeout * 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 this.pause(false).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 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.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n 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","import Player from './player';\nimport Events from \"./utils/events\";\nimport {DEMUX_TYPE, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS, PLAYER_PLAY_PROTOCOL, SCALE_MODE_TYPE} from \"./constant\";\nimport {isEmpty, isNotEmpty, supportWCS, uuid16} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\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\n $container.classList.add('jessibuca-container');\n\n delete _opt.container;\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.events = new Events(this);\n this._initPlayer($container, _opt);\n }\n\n /**\n *\n */\n destroy() {\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n this.$container = null;\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 this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n const _options = Object.assign(this._opt, options);\n this._initPlayer(this.$container, _options);\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 * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n isDebug: !!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 this.player.pause();\n }\n\n /**\n *\n */\n close() {\n // clear url\n this._opt.url = '';\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 * @returns {Promise}\n */\n play(url) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject();\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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n return this._play(url);\n }).catch(() => {\n reject();\n })\n }\n } else {\n return this._play(url);\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @returns {Promise}\n * @private\n */\n _play(url) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\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.mediaSourceH265NotSupport, () => {\n this.close().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n }\n });\n })\n\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.close().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n\n // 解码报错。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.close().then(() => {\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n }\n })\n\n // 监听 delay timeout\n this.player.once(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay && this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes) {\n this._heartTimeoutReplayTimes += 1;\n this.play(url).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.once(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay && this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes) {\n this._loadingTimeoutReplayTimes += 1;\n this.play(url).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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\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, 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 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.playing;\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\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","DEMUX_TYPE","flv","m7s","DEFAULT_PLAYER_OPTIONS","videoBuffer","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","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","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","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","mediaSourceH265NotSupport","wasmDecodeError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","H265_NAL_TYPE","vps","sps","pps","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","FILE_SUFFIX","mp4","webm","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","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","downloadImg","content","fileName","aLink","document","createElement","href","URL","createObjectURL","click","setTimeout","revokeObjectURL","isIOS","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","downloadRecord","suffix","window","UA","navigator","userAgent","toLowerCase","test","supportWCS","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","toString","codec","description","isFullScreen","mozIsFullScreen","webkitIsFullScreen","bpsSize","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","isEmpty","undefined","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","screenfullChange","emit","screenfull","on","events","off","loaded","request","then","catch","exit","classList","add","bodyHeight","bodyWidth","body","playerHeight","playerWidth","$videoElement","bodyRatio","playerRatio","needSpin","scale","transform","remove","ignoreList","includes","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","i","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","v","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","updateVideoInfo","encTypeCode","encType","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","removeChild","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","clearView","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","resizeWidth","resizeHeight","wScale","hScale","VideoLoader","muted","$video","canvas","videoWidth","videoHeight","context","objectFill","objectFit","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isPlaying","isMute","isStateSuspended","volume","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","isNaN","setValueAtTime","currentTime","disconnect","state","resume","suspend","isStateRunning","Audio","FetchLoader","abortController","AbortController","streamRate","rate","abort","fetchStream","demux","_times","signal","res","reader","getReader","fetchNext","read","done","byteLength","dispatch","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","global","RecordRTCLoader","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","indexOf","JSON","stringify","decodeVideo","arrayBuffer","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","resetDelay","_loop","payload","_doDecoderDecode","_doDecode","pushBuffer","webcodecsDecoder","mseDecoder","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp","ArrayBuffer","tmp8","tmp32","Uint32Array","t","abps","vbps","need","next","combine","set","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","isIframe","Demux","WebcodecsDecoder","hasInit","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","setAttribute","display","overflow","pointerEvents","zIndex","contentDocument","defaultView","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","parseInt","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$record","$recordStop","$play","$pause","$screenshot","$speed","bps","$controls","volumeChangeFromEvent","bottom","panelBottom","composedPath","isFocus","stopPropagation","$volume","$volumePanelWrap","lastVolume","isVolumeDroging","addHotkey","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","preventDefault","Control","template","observer","property","hotkey","autoSize","padding","canvasWidth","canvasHeight","canvasRatio","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","prototype","call","arguments","arrayCount","offset","generateInitSegment","meta","timescale","duration","trackId","id","presentWidth","presentHeight","xmhd","videoType","channelCount","audioSampleRate","configSize","concat","avcc","codecWidth","codecHeight","track","baseMediaDecodeTime","sequenceNumber","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","cts","isNonSync","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","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","version","avcProfile","_naluLengthSize","spsCount","getUint16","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","ppsCount","parseHEVCDecoderConfigurationRecord","vpsTag","vpsLength","vpsData","from","spsTag","spsLength","spsData","ppsTag","ppsLength","ppsData","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","stop","readyState","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","_decodeVideo","metaData","metaBox","appendBuffer","bytes","dts","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","endOfStream","dropSourceBuffer","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","random","dataURI","isEnabled","wakeLock","err","disable","hidden","location","Promise","resolve","playPromise","release","Player","container","assign","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","releaseWakeLock","resetStats","contains","updateOption","reject","checkLoadingTimeout","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","clearTimeout","_nowTime","Jessibuca","ERROR","TIMEOUT","Error","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_initPlayer","_bindEvents","_resetPlayer","_options","setDebug","isDebug","cancelMute","audioResume","time","setScaleMode","_play","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen"],"mappings":";;;;;;IAAA;IACO,MAAMA,oBAAoB,GAAG;IAChCC,EAAAA,SAAS,EAAE,CADqB;IAEhCC,EAAAA,KAAK,EAAE;IAFyB,CAA7B;IAKA,MAAMC,UAAU,GAAG;IACtBC,EAAAA,GAAG,EAAE,KADiB;IAEtBC,EAAAA,GAAG,EAAE;IAFiB,CAAnB;;IAOA,MAAMC,sBAAsB,GAAG;IAClCC,EAAAA,WAAW,EAAE,IADqB;IACf;IACnBC,EAAAA,QAAQ,EAAE,IAFwB;IAGlCC,EAAAA,YAAY,EAAE,KAHoB;IAGb;IACrBC,EAAAA,KAAK,EAAE,KAJ2B;IAKlCC,EAAAA,KAAK,EAAE,KAL2B;IAMlCC,EAAAA,MAAM,EAAE,KAN0B;IAMnB;IACfC,EAAAA,cAAc,EAAE,EAPkB;IAOd;IACpBC,EAAAA,YAAY,EAAE,CARoB;IAQhB;IAClBC,EAAAA,OAAO,EAAE,EATyB;IASrB;IACbC,EAAAA,oBAAoB,EAAE,KAVY;IAUL;IAC7BC,EAAAA,kBAAkB,EAAE,KAXc;IAWR;IAC1BC,EAAAA,yBAAyB,EAAE,CAZO;IAYJ;IAC9BC,EAAAA,uBAAuB,EAAE,CAbS;IAaN;IAC5BC,EAAAA,yBAAyB,EAAE,KAdO;IAelCC,EAAAA,aAAa,EAAE,KAfmB;IAeZ;IACtBC,EAAAA,YAAY,EAAE,KAhBoB;IAiBlCC,EAAAA,SAAS,EAAE,KAjBuB;IAkBlCC,EAAAA,QAAQ,EAAE,IAlBwB;IAmBlCC,EAAAA,QAAQ,EAAE,IAnBwB;IAoBlCC,EAAAA,WAAW,EAAE;IACTC,IAAAA,UAAU,EAAE,KADH;IAETC,IAAAA,UAAU,EAAE,KAFH;IAGTC,IAAAA,IAAI,EAAE,KAHG;IAITC,IAAAA,KAAK,EAAE,KAJE;IAKTC,IAAAA,MAAM,EAAE;IALC,GApBqB;IA2BlCC,EAAAA,eAAe,EAAE,KA3BiB;IA4BlCC,EAAAA,UAAU,EAAE,KA5BsB;IA6BlCC,EAAAA,WAAW,EAAE,EA7BqB;IA8BlCC,EAAAA,UAAU,EAAE,EA9BsB;IA+BlCC,EAAAA,OAAO,EAAE,YA/ByB;IAgClCC,EAAAA,GAAG,EAAE,EAhC6B;IAgC1B;IACRC,EAAAA,MAAM,EAAE,CAjC0B;IAkClC;IACAC,EAAAA,gBAAgB,EAAE,IAnCgB;IAmCV;IACxBC,EAAAA,eAAe,EAAE,KApCiB;IAqClCC,EAAAA,QAAQ,EAAEzC,oBAAoB,CAACE,KArCG;IAsClCwC,EAAAA,SAAS,EAAEvC,UAAU,CAACC,GAtCY;IAsCP;IAC3BuC,EAAAA,MAAM,EAAE,KAvC0B;IAuCnB;IACfC,EAAAA,MAAM,EAAE,KAxC0B;IAwCnB;IACfC,EAAAA,YAAY,EAAE,KAzCoB;IAyCb;IACrBC,EAAAA,QAAQ,EAAE,IA1CwB;IA0ClB;IAChBC,EAAAA,qBAAqB,EAAE,IA3CW;IA2CL;IAC7BC,EAAAA,kBAAkB,EAAE,KA5Cc;;IAAA,CAA/B;IAgDA,MAAMC,eAAe,GAAG;IAC3BC,EAAAA,IAAI,EAAE,MADqB;IAE3BC,EAAAA,SAAS,EAAE,WAFgB;IAG3BC,EAAAA,MAAM,EAAE,QAHmB;IAI3BC,EAAAA,SAAS,EAAE,WAJgB;IAK3BC,EAAAA,SAAS,EAAE,WALgB;IAM3BC,EAAAA,IAAI,EAAE,MANqB;IAO3BC,EAAAA,MAAM,EAAE,QAPmB;IAQ3BC,EAAAA,SAAS,EAAE,WARgB;IAS3BC,EAAAA,SAAS,EAAE,WATgB;IAU3BC,EAAAA,SAAS,EAAE;IAVgB,CAAxB;IAaA,MAAMC,UAAU,GAAG;IACtBC,EAAAA,kBAAkB,EAAE,uBADE;;IAAA,CAAnB;IAKA,MAAMC,UAAU,GAAG;IACtBhC,EAAAA,KAAK,EAAE,CADe;IAEtBiC,EAAAA,KAAK,EAAE;IAFe,CAAnB;IAKA,MAAMC,cAAc,GAAG;IAC1BlC,EAAAA,KAAK,EAAE,CADmB;IAE1BiC,EAAAA,KAAK,EAAE;IAFmB,CAAvB;IAKA,MAAME,gBAAgB,GAAG;IAC5Bf,EAAAA,IAAI,EAAE,MADsB;IAE5BM,EAAAA,MAAM,EAAE,QAFoB;IAG5BU,EAAAA,WAAW,EAAE,aAHe;IAI5BC,EAAAA,WAAW,EAAE,aAJe;IAK5BC,EAAAA,KAAK,EAAE,OALqB;IAM5BC,EAAAA,YAAY,EAAE;IANc,CAAzB;;IAWA,MAAMC,MAAM,GAAG;IAClB3C,EAAAA,UAAU,EAAE,cADM;IAElB4C,EAAAA,aAAa,EAAE,eAFG;IAGlBC,EAAAA,iBAAiB,EAAE,mBAHD;IAIlB3C,EAAAA,IAAI,EAAE,MAJY;IAKlB4C,EAAAA,OAAO,EAAE,SALS;IAMlBC,EAAAA,KAAK,EAAE,OANW;IAOlBC,EAAAA,IAAI,EAAE,MAPY;IAQlBC,EAAAA,IAAI,EAAE,MARY;IASlBC,EAAAA,OAAO,EAAE,SATS;IAUlBC,EAAAA,SAAS,EAAE,WAVO;IAWlBC,EAAAA,UAAU,EAAE,YAXM;IAYlBC,EAAAA,SAAS,EAAE,WAZO;IAalBC,EAAAA,GAAG,EAAE,KAba;IAclBC,EAAAA,KAAK,EAAE,OAdW;IAelB3B,EAAAA,IAAI,EAAE,MAfY;IAgBlBxC,EAAAA,OAAO,EAAE,SAhBS;IAiBlBoE,EAAAA,YAAY,EAAE,cAjBI;IAkBlBtE,EAAAA,cAAc,EAAE,gBAlBE;IAmBlBuE,EAAAA,KAAK,EAAE,OAnBW;IAoBlBC,EAAAA,WAAW,EAAE,aApBK;IAqBlBtD,EAAAA,MAAM,EAAE,QArBU;IAsBlBuD,EAAAA,SAAS,EAAE,WAtBO;IAuBlBC,EAAAA,kBAAkB,EAAE,oBAvBF;IAwBlBC,EAAAA,WAAW,EAAE,aAxBK;IAyBlBC,EAAAA,SAAS,EAAE,WAzBO;IA0BlBC,EAAAA,iBAAiB,EAAE,mBA1BD;IA2BlBC,EAAAA,MAAM,EAAE,QA3BU;IA4BlBC,EAAAA,UAAU,EAAE,YA5BM;IA6BlBC,EAAAA,KAAK,EAAE,OA7BW;IA8BlBC,EAAAA,QAAQ,EAAE,UA9BQ;IA+BlBC,EAAAA,MAAM,EAAE,QA/BU;IAgClBC,EAAAA,SAAS,EAAE,WAhCO;IAiClBC,EAAAA,aAAa,EAAE,eAjCG;IAkClBC,EAAAA,aAAa,EAAE,eAlCG;IAmClBC,EAAAA,WAAW,EAAE,aAnCK;IAoClBC,EAAAA,YAAY,EAAE,cApCI;IAqClBC,EAAAA,OAAO,EAAE,SArCS;IAsClBC,EAAAA,aAAa,EAAE,eAtCG;IAuClBC,EAAAA,cAAc,EAAE,gBAvCE;IAwClBC,EAAAA,oBAAoB,EAAE,sBAxCJ;IAyClBC,EAAAA,mBAAmB,EAAE,qBAzCH;IA0ClBC,EAAAA,YAAY,EAAE,cA1CI;IA2ClBC,EAAAA,eAAe,EAAE,iBA3CC;IA4ClBC,EAAAA,cAAc,EAAE,gBA5CE;IA6ClBC,EAAAA,iBAAiB,EAAE;IA7CD,CAAf;IAiDA,MAAMC,gBAAgB,GAAG;IAC5BlC,EAAAA,IAAI,EAAEN,MAAM,CAACM,IADe;IAE5BG,EAAAA,UAAU,EAAET,MAAM,CAACS,UAFS;IAG5BD,EAAAA,SAAS,EAAER,MAAM,CAACQ,SAHU;IAI5BE,EAAAA,SAAS,EAAEV,MAAM,CAACU,SAJU;IAK5BE,EAAAA,KAAK,EAAEZ,MAAM,CAACY,KALc;IAM5B3B,EAAAA,IAAI,EAAEe,MAAM,CAACf,IANe;IAO5B0B,EAAAA,GAAG,EAAEX,MAAM,CAACW,GAPgB;IAQ5BY,EAAAA,KAAK,EAAEvB,MAAM,CAACuB,KARc;IAS5B9E,EAAAA,OAAO,EAAEuD,MAAM,CAACvD,OATY;IAU5BF,EAAAA,cAAc,EAAEyD,MAAM,CAACzD,cAVK;IAW5BsE,EAAAA,YAAY,EAAEb,MAAM,CAACa,YAXO;IAY5BxD,EAAAA,UAAU,EAAE,YAZgB;IAa5BE,EAAAA,IAAI,EAAEyC,MAAM,CAACzC,IAbe;IAc5B6C,EAAAA,KAAK,EAAEJ,MAAM,CAACI,KAdc;IAe5BC,EAAAA,IAAI,EAAEL,MAAM,CAACK,IAfe;IAgB5BS,EAAAA,KAAK,EAAEd,MAAM,CAACc,KAhBc;IAiB5BC,EAAAA,WAAW,EAAEf,MAAM,CAACe,WAjBQ;IAkB5BE,EAAAA,kBAAkB,EAAEjB,MAAM,CAACiB,kBAlBC;IAmB5BC,EAAAA,WAAW,EAAElB,MAAM,CAACkB,WAnBQ;IAoB5BC,EAAAA,SAAS,EAAEnB,MAAM,CAACmB,SApBU;IAqB5BoB,EAAAA,iBAAiB,EAAEvC,MAAM,CAACuC;IArBE,CAAzB;IAwBA,MAAME,YAAY,GAAG;IACxBC,EAAAA,SAAS,EAAE,2BADa;IAExBC,EAAAA,UAAU,EAAE,YAFY;IAGxBC,EAAAA,cAAc,EAAE,gBAHQ;IAIxBC,EAAAA,uBAAuB,EAAE,yBAJD;IAKxBC,EAAAA,yBAAyB,EAAE,2BALH;IAMxBC,EAAAA,eAAe,EAAE;IANO,CAArB;IAUA,MAAMC,gBAAgB,GAAG;IAC5BC,EAAAA,UAAU,EAAE,YADgB;IAE5BC,EAAAA,IAAI,EAAE,MAFsB;IAG5BpD,EAAAA,KAAK,EAAE,OAHqB;IAI5Bc,EAAAA,KAAK,EAAE;IAJqB,CAAzB;IAcA,MAAMuC,eAAe,GAAG;IAC3BC,EAAAA,QAAQ,EAAE,UADiB;IAE3BC,EAAAA,MAAM,EAAE,QAFmB;IAG3BC,EAAAA,IAAI,EAAE;IAHqB,CAAxB;IAOA,MAAMC,cAAc,GAAG;IAC1B,KAAG,WADuB;IACV;IAChB,MAAI,YAFsB;;IAAA,CAAvB;IAKA,MAAMC,cAAc,GAAG;IAC1BC,EAAAA,IAAI,EAAE,CADoB;IAE1BC,EAAAA,IAAI,EAAE;IAFoB,CAAvB;IAMA,MAAMC,cAAc,GAAG;IAC1B,MAAI,KADsB;IAE1B,KAAG,MAFuB;IAG1B,KAAG;IAHuB,CAAvB;IAMA,MAAMC,aAAa,GAAG;IACzBC,EAAAA,GAAG,EAAE,EADoB;IAEzBC,EAAAA,GAAG,EAAE,EAFoB;IAGzBC,EAAAA,GAAG,EAAE;IAHoB,CAAtB;IAMA,MAAMC,cAAc,GAAG,EAAvB;IAEA,MAAMC,eAAe,GAAG;IAC3BC,EAAAA,IAAI,EAAE,CADqB;IAClB;IACTC,EAAAA,IAAI,EAAE,CAFqB;IAElB;IACTC,EAAAA,QAAQ,EAAE,CAHiB;;IAAA,CAAxB;IAOA,MAAMC,aAAW,GAAG;IACvBC,EAAAA,GAAG,EAAE,KADkB;IAEvBC,EAAAA,IAAI,EAAE;IAFiB,CAApB;IAMA,MAAMC,kBAAkB,GAAG;IAC9BC,EAAAA,SAAS,EAAE,WADmB;IAE9BC,EAAAA,KAAK,EAAE,OAFuB;IAG9BC,EAAAA,SAAS,EAAE;IAHmB,CAA3B;IAMA,MAAMC,kBAAkB,GAAG;IAC9BC,EAAAA,GAAG,EAAE,KADyB;IAE9BC,EAAAA,KAAK,EAAE;IAFuB,CAA3B;IAMA,MAAMC,UAAU,GAAG;IACtBC,EAAAA,GAAG,EAAE,iCADiB;IAEtBC,EAAAA,GAAG,EAAE;IAFiB,CAAnB;IAMA,MAAMC,kBAAkB,GAAG;IAC9BC,EAAAA,KAAK,EAAE,OADuB;IAE9BjC,EAAAA,IAAI,EAAE,MAFwB;IAG9BkC,EAAAA,MAAM,EAAE;IAHsB,CAA3B;IAWA,MAAMC,qBAAqB,GAAG,IAA9B;IAGA,MAAMC,OAAO,GAAG;IACnBC,EAAAA,GAAG,EAAE,EADc;IACV;IACTC,EAAAA,OAAO,EAAE,EAFU;IAEN;IACbC,EAAAA,SAAS,EAAE,EAHQ;;IAAA,CAAhB;;IClRQ,MAAMC,KAAN,CAAY;IACvBC,EAAAA,WAAW,CAACC,MAAD,EAAS;IAChB,SAAKjF,GAAL,GAAW,UAACkF,IAAD,EAAmB;IAC1B,UAAID,MAAM,CAACE,IAAP,CAAYzJ,KAAhB,EAAuB;IAAA,0CADN0J,IACM;IADNA,UAAAA,IACM;IAAA;;IACnBC,QAAAA,OAAO,CAACrF,GAAR,CAAa,eAAckF,IAAK,GAAhC,EAAoC,GAAGE,IAAvC;IACH;IACJ,KAJD;;IAMA,SAAKE,IAAL,GAAY,UAACJ,IAAD,EAAmB;IAC3B,UAAID,MAAM,CAACE,IAAP,CAAYzJ,KAAhB,EAAuB;IAAA,2CADL0J,IACK;IADLA,UAAAA,IACK;IAAA;;IACnBC,QAAAA,OAAO,CAACC,IAAR,CAAc,eAAcJ,IAAK,GAAjC,EAAqC,GAAGE,IAAxC;IACH;IACJ,KAJD;;IAMA,SAAKnF,KAAL,GAAa,UAACiF,IAAD,EAAmB;IAC5B,UAAID,MAAM,CAACE,IAAP,CAAYzJ,KAAhB,EAAuB;IAAA,2CADJ0J,IACI;IADJA,UAAAA,IACI;IAAA;;IACnBC,QAAAA,OAAO,CAACpF,KAAR,CAAe,eAAciF,IAAK,GAAlC,EAAsC,GAAGE,IAAzC;IACH;IACJ,KAJD;IAKH;;IAnBsB;;ICAZ,MAAMG,MAAN,CAAa;IACxBP,EAAAA,WAAW,CAACC,MAAD,EAAS;IAChB,SAAKO,QAAL,GAAgB,EAAhB;IACA,SAAKC,KAAL,GAAa,KAAKA,KAAL,CAAWC,IAAX,CAAgB,IAAhB,CAAb;IACA,SAAKT,MAAL,GAAcA,MAAd;IACH;;IAEDQ,EAAAA,KAAK,CAACE,MAAD,EAAST,IAAT,EAAeU,QAAf,EAAsC;IAAA,QAAbC,MAAa,uEAAJ,EAAI;;IACvC,QAAI,CAACF,MAAL,EAAa;IACT;IACH;;IACD,QAAIG,KAAK,CAACC,OAAN,CAAcb,IAAd,CAAJ,EAAyB;IACrB,aAAOA,IAAI,CAACc,GAAL,CAASC,IAAI,IAAI,KAAKR,KAAL,CAAWE,MAAX,EAAmBM,IAAnB,EAAyBL,QAAzB,EAAmCC,MAAnC,CAAjB,CAAP;IACH;;IACDF,IAAAA,MAAM,CAACO,gBAAP,CAAwBhB,IAAxB,EAA8BU,QAA9B,EAAwCC,MAAxC;;IACA,UAAMzE,OAAO,GAAG,MAAMuE,MAAM,CAACQ,mBAAP,CAA2BjB,IAA3B,EAAiCU,QAAjC,EAA2CC,MAA3C,CAAtB;;IACA,SAAKL,QAAL,CAAcY,IAAd,CAAmBhF,OAAnB;IACA,WAAOA,OAAP;IACH;;IAEDA,EAAAA,OAAO,GAAG;IACN,SAAK6D,MAAL,CAAYvJ,KAAZ,IAAqB,KAAKuJ,MAAL,CAAYvJ,KAAZ,CAAkBsE,GAAlB,CAAuB,QAAvB,EAAgC,SAAhC,CAArB;IACA,SAAKwF,QAAL,CAAca,OAAd,CAAsBC,KAAK,IAAIA,KAAK,EAApC;IACH;;IAvBuB;;ACA5B,sBAAgBC,MAAD,IAAY;IACvBC,EAAAA,MAAM,CAACC,cAAP,CAAsBF,MAAtB,EAA8B,MAA9B,EAAsC;IAClCG,IAAAA,GAAG,EAAE,MAAM;IACP,YAAMC,UAAU,GAAGJ,MAAM,CAACK,UAAP,CAAkBC,qBAAlB,EAAnB;IACAF,MAAAA,UAAU,CAACG,KAAX,GAAmBC,IAAI,CAACC,GAAL,CAASL,UAAU,CAACG,KAApB,EAA2BP,MAAM,CAACK,UAAP,CAAkBK,WAA7C,CAAnB;IACAN,MAAAA,UAAU,CAACO,MAAX,GAAoBH,IAAI,CAACC,GAAL,CAASL,UAAU,CAACO,MAApB,EAA4BX,MAAM,CAACK,UAAP,CAAkBO,YAA9C,CAApB;IACA,aAAOR,UAAP;IACH;IANiC,GAAtC;IASA,GAAC,QAAD,EAAW,QAAX,EAAqB,MAArB,EAA6B,OAA7B,EAAsC,KAAtC,EAA6C,OAA7C,EAAsDN,OAAtD,CAA8DnC,GAAG,IAAI;IACjEsC,IAAAA,MAAM,CAACC,cAAP,CAAsBF,MAAtB,EAA8BrC,GAA9B,EAAmC;IAC/BwC,MAAAA,GAAG,EAAE,MAAM;IACP,eAAOH,MAAM,CAACa,IAAP,CAAYlD,GAAZ,CAAP;IACH;IAH8B,KAAnC;IAKH,GAND;IAOH,CAjBD;;;;;;;;;ICAA;IACA;IACA;IACA;IACA;IACA,CAAC,YAAY;AAEb;IACA,CAAC,IAAI,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC/G,CAAC,IAAI,UAAU,GAAoC,MAAM,CAAC,OAAO,CAAC;AAClE;IACA,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY;IACvB,EAAE,IAAI,GAAG,CAAC;AACV;IACA,EAAE,IAAI,KAAK,GAAG;IACd,GAAG;IACH,IAAI,mBAAmB;IACvB,IAAI,gBAAgB;IACpB,IAAI,mBAAmB;IACvB,IAAI,mBAAmB;IACvB,IAAI,kBAAkB;IACtB,IAAI,iBAAiB;IACrB,IAAI;IACJ;IACA,GAAG;IACH,IAAI,yBAAyB;IAC7B,IAAI,sBAAsB;IAC1B,IAAI,yBAAyB;IAC7B,IAAI,yBAAyB;IAC7B,IAAI,wBAAwB;IAC5B,IAAI,uBAAuB;AAC3B;IACA,IAAI;IACJ;IACA,GAAG;IACH,IAAI,yBAAyB;IAC7B,IAAI,wBAAwB;IAC5B,IAAI,gCAAgC;IACpC,IAAI,wBAAwB;IAC5B,IAAI,wBAAwB;IAC5B,IAAI,uBAAuB;AAC3B;IACA,IAAI;IACJ,GAAG;IACH,IAAI,sBAAsB;IAC1B,IAAI,qBAAqB;IACzB,IAAI,sBAAsB;IAC1B,IAAI,sBAAsB;IAC1B,IAAI,qBAAqB;IACzB,IAAI,oBAAoB;IACxB,IAAI;IACJ,GAAG;IACH,IAAI,qBAAqB;IACzB,IAAI,kBAAkB;IACtB,IAAI,qBAAqB;IACzB,IAAI,qBAAqB;IACzB,IAAI,oBAAoB;IACxB,IAAI,mBAAmB;IACvB,IAAI;IACJ,GAAG,CAAC;AACJ;IACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf;IACA,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACrB,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;IAClC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/B,KAAK;IACL,IAAI,OAAO,GAAG,CAAC;IACf,IAAI;IACJ,GAAG;AACH;IACA,EAAE,OAAO,KAAK,CAAC;IACf,EAAE,GAAG,CAAC;AACN;IACA,CAAC,IAAI,YAAY,GAAG;IACpB,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAgB;IAC7B,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe;IAC3B,EAAE,CAAC;AACH;IACA,CAAC,IAAI,UAAU,GAAG;IAClB,EAAE,OAAO,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE;IACvC,GAAG,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;IACjD,IAAI,IAAI,mBAAmB,GAAG,YAAY;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC7C,KAAK,OAAO,EAAE,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB;IACA,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC3C;IACA,IAAI,OAAO,GAAG,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC;AAClD;IACA,IAAI,IAAI,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/D;IACA,IAAI,IAAI,aAAa,YAAY,OAAO,EAAE;IAC1C,KAAK,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK;IACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB,GAAG;IACH,EAAE,IAAI,EAAE,YAAY;IACpB,GAAG,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;IACjD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC5B,KAAK,OAAO,EAAE,CAAC;IACf,KAAK,OAAO;IACZ,KAAK;AACL;IACA,IAAI,IAAI,gBAAgB,GAAG,YAAY;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1C,KAAK,OAAO,EAAE,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB;IACA,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACxC;IACA,IAAI,IAAI,aAAa,GAAG,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;AACtD;IACA,IAAI,IAAI,aAAa,YAAY,OAAO,EAAE;IAC1C,KAAK,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,KAAK;IACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB,GAAG;IACH,EAAE,MAAM,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE;IACtC,GAAG,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3E,GAAG;IACH,EAAE,QAAQ,EAAE,UAAU,QAAQ,EAAE;IAChC,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,GAAG;IACH,EAAE,OAAO,EAAE,UAAU,QAAQ,EAAE;IAC/B,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9B,GAAG;IACH,EAAE,EAAE,EAAE,UAAU,KAAK,EAAE,QAAQ,EAAE;IACjC,GAAG,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,GAAG,IAAI,SAAS,EAAE;IAClB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI;IACJ,GAAG;IACH,EAAE,GAAG,EAAE,UAAU,KAAK,EAAE,QAAQ,EAAE;IAClC,GAAG,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,GAAG,IAAI,SAAS,EAAE;IAClB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI;IACJ,GAAG;IACH,EAAE,GAAG,EAAE,EAAE;IACT,EAAE,CAAC;AACH;IACA,CAAC,IAAI,CAAC,EAAE,EAAE;IACV,EAAE,IAAI,UAAU,EAAE;IAClB,GAAG,cAAc,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,GAAG,MAAM;IACT,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,GAAG;AACH;IACA,EAAE,OAAO;IACT,EAAE;AACF;IACA,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE;IACrC,EAAE,YAAY,EAAE;IAChB,GAAG,GAAG,EAAE,YAAY;IACpB,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACnD,IAAI;IACJ,GAAG;IACH,EAAE,OAAO,EAAE;IACX,GAAG,UAAU,EAAE,IAAI;IACnB,GAAG,GAAG,EAAE,YAAY;IACpB,IAAI,OAAO,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI;IACJ,GAAG;IACH,EAAE,SAAS,EAAE;IACb,GAAG,UAAU,EAAE,IAAI;IACnB,GAAG,GAAG,EAAE,YAAY;IACpB;IACA,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACnD,IAAI;IACJ,GAAG;IACH,EAAE,CAAC,CAAC;AACJ;IACA,CAAC,IAAI,UAAU,EAAE;IACjB,EAAE,cAAc,GAAG,UAAU,CAAC;IAC9B,EAAE,MAAM;IACR,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,EAAE;IACF,CAAC,GAAG;;;;ICrLG,SAASmD,IAAT,GAAgB;IAIhB,SAASC,gBAAT,CAA0BC,OAA1B,EAAmC;IACtC,SAAO,OAAOA,OAAO,CAACC,0BAAf,KAA8C,UAArD;IACH;IAGM,SAASC,kBAAT,GAA8B;IACjC,SAAO,OAAOC,eAAP,KAA2B,WAAlC;IACH;IAGM,SAASC,eAAT,CAAyBJ,OAAzB,EAAkC;IACrC,MAAIK,EAAE,GAAG,IAAT;IAEA,QAAMC,iBAAiB,GAAG,CAAC,OAAD,EAAU,oBAAV,EAAgC,WAAhC,EAA6C,WAA7C,CAA1B;IACA,MAAIC,SAAS,GAAG,CAAhB;;IAEA,SAAO,CAACF,EAAD,IAAOE,SAAS,GAAGD,iBAAiB,CAACE,MAA5C,EAAoD;IAChD,UAAMC,WAAW,GAAGH,iBAAiB,CAACC,SAAD,CAArC;;IAEA,QAAI;IACA,UAAIG,cAAc,GAAG;IAACC,QAAAA,qBAAqB,EAAE;IAAxB,OAArB;IACAN,MAAAA,EAAE,GAAGL,OAAO,CAACY,UAAR,CAAmBH,WAAnB,EAAgCC,cAAhC,CAAL;IACH,KAHD,CAGE,OAAOG,CAAP,EAAU;IACRR,MAAAA,EAAE,GAAG,IAAL;IACH;;IAED,QAAI,CAACA,EAAD,IAAO,OAAOA,EAAE,CAACS,YAAV,KAA2B,UAAtC,EAAkD;IAC9CT,MAAAA,EAAE,GAAG,IAAL;IACH;;IAED,MAAEE,SAAF;IACH;;IAGD,SAAOF,EAAP;IACH;IAeM,SAASU,aAAT,GAAqC;IAAA,MAAdC,OAAc,uEAAJ,EAAI;IACxC,QAAMC,GAAG,GAAGD,OAAO,CAACE,KAAR,CAAc,GAAd,CAAZ;IACA,QAAMC,IAAI,GAAGC,IAAI,CAACH,GAAG,CAAC,CAAD,CAAJ,CAAjB;IACA,QAAMI,IAAI,GAAGJ,GAAG,CAAC,CAAD,CAAH,CAAOK,OAAP,CAAe,OAAf,EAAwB,EAAxB,EAA4BA,OAA5B,CAAoC,SAApC,EAA+C,EAA/C,CAAb;IACA,MAAIC,CAAC,GAAGJ,IAAI,CAACX,MAAb;IAAA,MAAqBgB,KAAK,GAAG,IAAIC,UAAJ,CAAeF,CAAf,CAA7B;;IACA,SAAOA,CAAC,EAAR,EAAY;IACRC,IAAAA,KAAK,CAACD,CAAD,CAAL,GAAWJ,IAAI,CAACO,UAAL,CAAgBH,CAAhB,CAAX;IACH;;IACD,SAAO,IAAII,IAAJ,CAAS,CAACH,KAAD,CAAT,EAAkB,MAAlB,EAA0B;IAACH,IAAAA;IAAD,GAA1B,CAAP;IACH;IAaM,SAASO,WAAT,CAAqBC,OAArB,EAA8BC,QAA9B,EAAwC;IAC3C,QAAMC,KAAK,GAAGC,QAAQ,CAACC,aAAT,CAAuB,GAAvB,CAAd;IACAF,EAAAA,KAAK,CAAC7G,QAAN,GAAiB4G,QAAjB;IACAC,EAAAA,KAAK,CAACG,IAAN,GAAaC,GAAG,CAACC,eAAJ,CAAoBP,OAApB,CAAb;IACAE,EAAAA,KAAK,CAACM,KAAN;IACAC,EAAAA,UAAU,CAAC,MAAM;IACbH,IAAAA,GAAG,CAACI,eAAJ,CAAoBV,OAApB;IACH,GAFS,EAEPW,KAAK,KAAK,IAAL,GAAY,CAFV,CAAV;IAGH;IAQM,SAASC,GAAT,GAAe;IAClB,SAAO,IAAIC,IAAJ,GAAWC,OAAX,EAAP;IACH;IAE4B,CAAC,MAAM;IAChC,MAAI;IACA,QAAI,OAAOC,WAAP,KAAuB,QAAvB,IACG,OAAOA,WAAW,CAACC,WAAnB,KAAmC,UAD1C,EACsD;IAClD,YAAMC,MAAM,GAAG,IAAIF,WAAW,CAACG,MAAhB,CAAuBtB,UAAU,CAACuB,EAAX,CAAc,GAAd,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,CAAvB,CAAf;IACA,UAAIF,MAAM,YAAYF,WAAW,CAACG,MAAlC,EACI,OAAO,IAAIH,WAAW,CAACK,QAAhB,CAAyBH,MAAzB,aAA4CF,WAAW,CAACK,QAA/D;IACP;IACJ,GAPD,CAOE,OAAOpC,CAAP,EAAU;;IAEZ,SAAO,KAAP;IACH,CAX4B;IAatB,SAASqC,KAAT,CAAeC,GAAf,EAAoBC,CAApB,EAAuBC,CAAvB,EAA0B;IAC7B,SAAO7D,IAAI,CAACC,GAAL,CAASD,IAAI,CAAC8D,GAAL,CAASH,GAAT,EAAc3D,IAAI,CAACC,GAAL,CAAS2D,CAAT,EAAYC,CAAZ,CAAd,CAAT,EAAwC7D,IAAI,CAAC8D,GAAL,CAASF,CAAT,EAAYC,CAAZ,CAAxC,CAAP;IACH;IAEM,SAASE,QAAT,CAAkBC,OAAlB,EAA2B7G,GAA3B,EAAgC8G,KAAhC,EAAuC;IAC1C,MAAI,CAACD,OAAL,EAAc;IACV;IACH;;IACD,MAAI,OAAO7G,GAAP,KAAe,QAAnB,EAA6B;IACzBsC,IAAAA,MAAM,CAACyE,IAAP,CAAY/G,GAAZ,EAAiBmC,OAAjB,CAAyBJ,IAAI,IAAI;IAC7B6E,MAAAA,QAAQ,CAACC,OAAD,EAAU9E,IAAV,EAAgB/B,GAAG,CAAC+B,IAAD,CAAnB,CAAR;IACH,KAFD;IAGH;;IACD8E,EAAAA,OAAO,CAACG,KAAR,CAAchH,GAAd,IAAqB8G,KAArB;IACA,SAAOD,OAAP;IACH;IAGM,SAASI,QAAT,CAAkBJ,OAAlB,EAA2B7G,GAA3B,EAAmD;IAAA,MAAnBkH,UAAmB,uEAAN,IAAM;;IACtD,MAAI,CAACL,OAAL,EAAc;IACV,WAAO,CAAP;IACH;;IAED,QAAMC,KAAK,GAAGK,gBAAgB,CAACN,OAAD,EAAU,IAAV,CAAhB,CAAgCO,gBAAhC,CAAiDpH,GAAjD,CAAd;IACA,SAAOkH,UAAU,GAAGG,UAAU,CAACP,KAAD,CAAb,GAAuBA,KAAxC;IACH;IAEM,SAASQ,UAAT,GAAsB;IACzB,MAAIpL,WAAW,IAAI,OAAOA,WAAW,CAAC4J,GAAnB,KAA2B,UAA9C,EAA0D;IACtD,WAAO5J,WAAW,CAAC4J,GAAZ,EAAP;IACH;;IACD,SAAOC,IAAI,CAACD,GAAL,EAAP;IACH;IAEM,SAASyB,eAAT,CAAyB7F,QAAzB,EAAmC;IACtC,MAAI8F,SAAS,GAAG,CAAhB;IACA,MAAIC,QAAQ,GAAGH,UAAU,EAAzB;IACA,SAAOI,IAAI,IAAI;IACXF,IAAAA,SAAS,IAAIE,IAAb;IACA,UAAMC,QAAQ,GAAGL,UAAU,EAA3B;IACA,UAAMM,QAAQ,GAAGD,QAAQ,GAAGF,QAA5B;;IACA,QAAIG,QAAQ,IAAI,IAAhB,EAAsB;IAClBlG,MAAAA,QAAQ,CAAE8F,SAAS,GAAGI,QAAb,GAAyB,IAA1B,CAAR;IACAH,MAAAA,QAAQ,GAAGE,QAAX;IACAH,MAAAA,SAAS,GAAG,CAAZ;IACH;IACJ,GATD;IAUH;IAEM,SAASK,cAAT,CAAwBpJ,IAAxB,EAA8BuC,IAA9B,EAAoC8G,MAApC,EAA4C;IAC/C,QAAM5O,GAAG,GAAG6O,MAAM,CAACvC,GAAP,CAAWC,eAAX,CAA2BhH,IAA3B,CAAZ;IACA,QAAMgI,CAAC,GAAGpB,QAAQ,CAACC,aAAT,CAAuB,GAAvB,CAAV;IACAmB,EAAAA,CAAC,CAAClB,IAAF,GAASrM,GAAT;IACAuN,EAAAA,CAAC,CAAClI,QAAF,GAAa,CAACyC,IAAI,IAAI8E,GAAG,EAAZ,IAAkB,GAAlB,IAAyBgC,MAAM,IAAItI,WAAW,CAACE,IAA/C,CAAb;IACA+G,EAAAA,CAAC,CAACf,KAAF;IACAC,EAAAA,UAAU,CAAC,MAAM;IACboC,IAAAA,MAAM,CAACvC,GAAP,CAAWI,eAAX,CAA2B1M,GAA3B;IACH,GAFS,EAEP2M,KAAK,KAAK,IAAL,GAAY,CAFV,CAAV;IAGH;IAaM,SAASA,KAAT,GAAiB;IACpB,QAAMmC,EAAE,GAAGD,MAAM,CAACE,SAAP,CAAiBC,SAAjB,CAA2BC,WAA3B,EAAX;IACA,SAAOH,EAAE,IAAI,uBAAuBI,IAAvB,CAA4BJ,EAA5B,CAAb;IACH;;IAqCM,SAASK,UAAT,GAAsB;IACzB,SAAO,kBAAkBN,MAAzB;IACH;IAmDM,SAASO,2BAAT,CAAqCC,IAArC,EAA2C;IAC9C,MAAIC,UAAU,GAAGD,IAAI,CAACE,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAjB;IACA,MAAIC,WAAW,GAAG,OAAlB;;IACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;IACxB,QAAIC,CAAC,GAAGJ,UAAU,CAACG,CAAD,CAAV,CAAcE,QAAd,CAAuB,EAAvB,CAAR;;IACA,QAAID,CAAC,CAAC/E,MAAF,GAAW,CAAf,EAAkB;IACd+E,MAAAA,CAAC,GAAG,MAAMA,CAAV;IACH;;IACDF,IAAAA,WAAW,IAAIE,CAAf;IACH;;IAED,SAAO;IACHE,IAAAA,KAAK,EAAEJ,WADJ;IAEHK,IAAAA,WAAW,EAAER;IAFV,GAAP;IAIH;IAEM,SAASS,YAAT,GAAwB;IAC3B,SAAO3D,QAAQ,CAAC2D,YAAT,IAAyB3D,QAAQ,CAAC4D,eAAlC,IAAqD5D,QAAQ,CAAC6D,kBAArE;IACH;IAEM,SAASC,OAAT,CAAiBrC,KAAjB,EAAwB;IAC3B,MAAI,QAAQA,KAAR,IAAiBA,KAAK,KAAK,EAA/B,EAAmC;IAC/B,WAAO,QAAP;IACH;;IACD,MAAIY,IAAI,GAAGL,UAAU,CAACP,KAAD,CAArB;IACAY,EAAAA,IAAI,GAAGA,IAAI,CAAC0B,OAAL,CAAa,CAAb,CAAP;IACA,SAAO1B,IAAI,GAAG,MAAd;IACH;IAGM,SAAS2B,SAAT,CAAmBC,GAAnB,EAAwB;IAC3B,MAAIC,MAAM,GAAG,CAAb;;IACA,MAAID,GAAG,IAAI,EAAX,EAAe;IACXC,IAAAA,MAAM,GAAG,CAAT;IACH,GAFD,MAEO,IAAID,GAAG,IAAI,EAAX,EAAe;IAClBC,IAAAA,MAAM,GAAG,CAAT;IACH;;IAED,SAAOA,MAAP;IACH;IAEM,SAASC,sBAAT,CAAgC5G,KAAhC,EAAuCI,MAAvC,EAA+C;IAClD,QAAMyG,cAAc,GAAGpE,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAvB;IACAmE,EAAAA,cAAc,CAAC7G,KAAf,GAAuBA,KAAvB;IACA6G,EAAAA,cAAc,CAACzG,MAAf,GAAwBA,MAAxB;IACA,SAAO0G,iBAAiB,CAACD,cAAD,EAAiB,CAAjB,EAAoB,CAApB,EAAuB7G,KAAvB,EAA8BI,MAA9B,CAAxB;IACH;IAGM,SAAS2G,UAAT,GAAsB;IACzB,SAAO5B,MAAM,CAAC6B,WAAP,IAAsB7B,MAAM,CAAC6B,WAAP,CAAmBC,eAAnB,CAAmC3J,UAAU,CAACC,GAA9C,CAA7B;IACH;IAmBM,SAAS2J,OAAT,CAAiBhD,KAAjB,EAAwB;IAC3B,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKiD,SAAnC;IACH;IAEM,SAASC,UAAT,CAAoBlD,KAApB,EAA2B;IAC9B,SAAO,CAACgD,OAAO,CAAChD,KAAD,CAAf;IACH;IAEM,SAASmD,aAAT,GAAyB;IAC5B,SAAO;IACHC,IAAAA,aAAa,EAAE,EADZ;IACgB;IACnBC,IAAAA,SAAS,EAAE,EAFR;IAEY;IACfC,IAAAA,WAAW,EAAE,EAHV;IAGc;IACjBC,IAAAA,cAAc,EAAE,EAJb;IAIiB;IACpBC,IAAAA,UAAU,EAAE,EALT;IAKa;IAChBC,IAAAA,WAAW,EAAE,EANV;IAMc;IACjBC,IAAAA,UAAU,EAAE,EAPT;IAOa;IAChBC,IAAAA,aAAa,EAAE,EARZ;IAQe;IAClBC,IAAAA,eAAe,EAAE,EATd;IASiB;IACpBC,IAAAA,uBAAuB,EAAE,EAVtB;IAUyB;IAC5BC,IAAAA,cAAc,EAAE,EAXb;IAWiB;IACpBC,IAAAA,eAAe,EAAE,EAZd;IAYkB;IACrBC,IAAAA,cAAc,EAAE,EAbb;IAagB;IACnBC,IAAAA,YAAY,EAAE,EAdX;;IAAA,GAAP;IAgBH;;AC/WD,oBAAgB1I,MAAD,IAAY;IAGvB,MAAI;IACA,UAAM2I,gBAAgB,GAAG,MAAM;IAC3B3I,MAAAA,MAAM,CAAC4I,IAAP,CAAYtN,gBAAgB,CAACnF,UAA7B,EAAyC6J,MAAM,CAAC7J,UAAhD,EAD2B;;IAI3B,UAAI,CAAC6J,MAAM,CAAC7J,UAAZ,EAAwB;IACpB6J,QAAAA,MAAM,CAACzF,MAAP;IACH,OAFD,MAEO;IACH,YAAGyF,MAAM,CAACpB,IAAP,CAAYxH,MAAf,EAAsB;IAClB4I,UAAAA,MAAM,CAACzF,MAAP;IACH;IACJ;IAEJ,KAZD;;IAaAsO,IAAAA,UAAU,CAACC,EAAX,CAAc,QAAd,EAAwBH,gBAAxB;IACA3I,IAAAA,MAAM,CAAC+I,MAAP,CAAc9J,QAAd,CAAuBY,IAAvB,CAA4B,MAAM;IAC9BgJ,MAAAA,UAAU,CAACG,GAAX,CAAe,QAAf,EAAyBL,gBAAzB;IACH,KAFD;IAGH,GAlBD,CAkBE,OAAOjP,KAAP,EAAc;IAEf,GAvBsB;;;IAyBvBsG,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACE,iBAAjB,EAAoC,MAAM;IACtCgH,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,QAAjB,EAA2B,YAA3B;IACAuG,IAAAA,MAAM,CAACiJ,MAAP,GAAgB,IAAhB;IACH,GAHD,EAzBuB;;IA+BvBjJ,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACzC,IAAjB,EAAuB,MAAM;IACzB2J,IAAAA,MAAM,CAAC3G,OAAP,GAAiB,KAAjB;IACH,GAFD,EA/BuB;;IAoCvB2G,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAAC3C,UAAjB,EAA8BsO,KAAD,IAAW;IACpC,QAAIA,KAAJ,EAAW;IACP,UAAI;IACAoE,QAAAA,UAAU,CAACK,OAAX,CAAmBlJ,MAAM,CAACK,UAA1B,EAAsC8I,IAAtC,CAA2C,MAAM,EAAjD,EAEGC,KAFH,CAEUvH,CAAD,IAAO;IACZ7B,UAAAA,MAAM,CAACjH,aAAP,GAAuB,IAAvB;IACH,SAJD;IAMH,OAPD,CAOE,OAAO8I,CAAP,EAAU;IACR7B,QAAAA,MAAM,CAACjH,aAAP,GAAuB,IAAvB;IACH;IACJ,KAXD,MAWO;IACH,UAAI;IACA8P,QAAAA,UAAU,CAACQ,IAAX,GAAkBF,IAAlB,CAAuB,MAAM,EAA7B,EACGC,KADH,CACS,MAAM;IACXpJ,UAAAA,MAAM,CAACjH,aAAP,GAAuB,KAAvB;IAEH,SAJD;IAKH,OAND,CAME,OAAO8I,CAAP,EAAU;IACR7B,QAAAA,MAAM,CAACjH,aAAP,GAAuB,KAAvB;IACH;IACJ;IACJ,GAvBD;IAyBAiH,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACC,aAAjB,EAAiC0L,KAAD,IAAW;IACvC,QAAIA,KAAJ,EAAW;IACPzE,MAAAA,MAAM,CAACK,UAAP,CAAkBiJ,SAAlB,CAA4BC,GAA5B,CAAgC,+BAAhC;IACA,YAAM;IAAC3I,QAAAA,YAAY,EAAE4I,UAAf;IAA2B9I,QAAAA,WAAW,EAAE+I;IAAxC,UAAqDzG,QAAQ,CAAC0G,IAApE;IACA,YAAM;IAAC9I,QAAAA,YAAY,EAAE+I,YAAf;IAA6BjJ,QAAAA,WAAW,EAAEkJ;IAA1C,UAAyD5J,MAAM,CAACzH,KAAP,CAAasR,aAA5E;IACA,YAAMC,SAAS,GAAGL,SAAS,GAAGD,UAA9B;IACA,YAAMO,WAAW,GAAGH,WAAW,GAAGD,YAAlC;IACA,YAAMK,QAAQ,GAAGF,SAAS,GAAGC,WAA7B;;IACA,UAAIC,QAAJ,EAAc;IACV,cAAMC,KAAK,GAAGzJ,IAAI,CAAC8D,GAAL,CAASkF,UAAU,GAAGI,WAAtB,EAAmCH,SAAS,GAAGE,YAA/C,CAAd;IACA3J,QAAAA,MAAM,CAACzH,KAAP,CAAasR,aAAb,CAA2BlF,KAA3B,CAAiCuF,SAAjC,GAA8C,uBAAsBD,KAAM,IAAGA,KAAM,GAAnF;IACH;IAEJ,KAZD,MAYO;IACHjK,MAAAA,MAAM,CAACK,UAAP,CAAkBiJ,SAAlB,CAA4Ba,MAA5B,CAAmC,+BAAnC;IACAnK,MAAAA,MAAM,CAACzH,KAAP,CAAasR,aAAb,CAA2BlF,KAA3B,CAAiCuF,SAAjC,GAA6C,IAA7C;IACH;IACJ,GAjBD,EA7DuB;;IAiFvBlK,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACyB,MAAjB,EAAyB,MAAM;IAC3ByF,IAAAA,MAAM,CAACzH,KAAP,CAAagC,MAAb;IACH,GAFD;;IAKA,MAAIyF,MAAM,CAACpB,IAAP,CAAYzJ,KAAhB,EAAuB;IACnB,UAAMiV,UAAU,GAAG,CAACtR,MAAM,CAACS,UAAR,CAAnB;IACA0G,IAAAA,MAAM,CAACyE,IAAP,CAAY5L,MAAZ,EAAoBgH,OAApB,CAA6BnC,GAAD,IAAS;IACjCqC,MAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAAC6E,GAAD,CAAhB,EAAwB8G,KAAD,IAAW;IAC9B,YAAI2F,UAAU,CAACC,QAAX,CAAoB1M,GAApB,CAAJ,EAA8B;IAC1B;IACH;;IAEDqC,QAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,eAAjB,EAAkCX,MAAM,CAAC6E,GAAD,CAAxC,EAA+C8G,KAA/C;IACH,OAND;IAOH,KARD;IAUAxE,IAAAA,MAAM,CAACyE,IAAP,CAAYnJ,YAAZ,EAA0BuE,OAA1B,CAAmCnC,GAAD,IAAS;IACvCqC,MAAAA,MAAM,CAAC8I,EAAP,CAAUvN,YAAY,CAACoC,GAAD,CAAtB,EAA8B8G,KAAD,IAAW;IACpCzE,QAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,oBAAjB,EAAuC8B,YAAY,CAACoC,GAAD,CAAnD,EAA0D8G,KAA1D;IACH,OAFD;IAGH,KAJD;IAKH;IACJ,CAxGD;;ICJe,MAAM6F,OAAN,CAAc;IACzBxB,EAAAA,EAAE,CAACnK,IAAD,EAAO4L,EAAP,EAAWC,GAAX,EAAgB;IACd,UAAM3I,CAAC,GAAG,KAAKA,CAAL,KAAW,KAAKA,CAAL,GAAS,EAApB,CAAV;IACA,KAACA,CAAC,CAAClD,IAAD,CAAD,KAAYkD,CAAC,CAAClD,IAAD,CAAD,GAAU,EAAtB,CAAD,EAA4BkB,IAA5B,CAAiC;IAAC0K,MAAAA,EAAD;IAAKC,MAAAA;IAAL,KAAjC;IACA,WAAO,IAAP;IACH;;IAEDC,EAAAA,IAAI,CAAC9L,IAAD,EAAO4L,EAAP,EAAWC,GAAX,EAAgB;IAChB,UAAME,IAAI,GAAG,IAAb;;IAEA,aAASC,QAAT,GAA2B;IACvBD,MAAAA,IAAI,CAAC1B,GAAL,CAASrK,IAAT,EAAegM,QAAf;;IADuB,wCAAN9L,IAAM;IAANA,QAAAA,IAAM;IAAA;;IAEvB0L,MAAAA,EAAE,CAACK,KAAH,CAASJ,GAAT,EAAc3L,IAAd;IACH;;IAED8L,IAAAA,QAAQ,CAACE,CAAT,GAAaN,EAAb;IACA,WAAO,KAAKzB,EAAL,CAAQnK,IAAR,EAAcgM,QAAd,EAAwBH,GAAxB,CAAP;IACH;;IAED5B,EAAAA,IAAI,CAACjK,IAAD,EAAgB;IAChB,UAAMmM,MAAM,GAAG,CAAC,CAAC,KAAKjJ,CAAL,KAAW,KAAKA,CAAL,GAAS,EAApB,CAAD,EAA0BlD,IAA1B,KAAmC,EAApC,EAAwCoM,KAAxC,EAAf;;IADgB,uCAANC,IAAM;IAANA,MAAAA,IAAM;IAAA;;IAEhB,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,MAAM,CAACtJ,MAA3B,EAAmCyJ,CAAC,IAAI,CAAxC,EAA2C;IACvCH,MAAAA,MAAM,CAACG,CAAD,CAAN,CAAUV,EAAV,CAAaK,KAAb,CAAmBE,MAAM,CAACG,CAAD,CAAN,CAAUT,GAA7B,EAAkCQ,IAAlC;IACH;;IACD,WAAO,IAAP;IACH;;IAEDhC,EAAAA,GAAG,CAACrK,IAAD,EAAOU,QAAP,EAAiB;IAChB,UAAMwC,CAAC,GAAG,KAAKA,CAAL,KAAW,KAAKA,CAAL,GAAS,EAApB,CAAV;;IAEA,QAAI,CAAClD,IAAL,EAAW;IACPsB,MAAAA,MAAM,CAACyE,IAAP,CAAY7C,CAAZ,EAAe/B,OAAf,CAAwBnC,GAAD,IAAS;IAC5B,eAAOkE,CAAC,CAAClE,GAAD,CAAR;IACH,OAFD;IAGA,aAAO,KAAKkE,CAAZ;IACA;IACH;;IAED,UAAMqJ,IAAI,GAAGrJ,CAAC,CAAClD,IAAD,CAAd;IACA,UAAMwM,UAAU,GAAG,EAAnB;;IACA,QAAID,IAAI,IAAI7L,QAAZ,EAAsB;IAClB,WAAK,IAAI4L,CAAC,GAAG,CAAR,EAAWG,GAAG,GAAGF,IAAI,CAAC1J,MAA3B,EAAmCyJ,CAAC,GAAGG,GAAvC,EAA4CH,CAAC,IAAI,CAAjD,EAAoD;IAChD,YAAIC,IAAI,CAACD,CAAD,CAAJ,CAAQV,EAAR,KAAelL,QAAf,IAA2B6L,IAAI,CAACD,CAAD,CAAJ,CAAQV,EAAR,CAAWM,CAAX,KAAiBxL,QAAhD,EAA0D8L,UAAU,CAACtL,IAAX,CAAgBqL,IAAI,CAACD,CAAD,CAApB;IAC7D;IACJ;;IACD,QAAIE,UAAU,CAAC3J,MAAf,EAAuB;IACnBK,MAAAA,CAAC,CAAClD,IAAD,CAAD,GAAUwM,UAAV;IACH,KAFD,MAEO;IACH,aAAOtJ,CAAC,CAAClD,IAAD,CAAR;IACH;;IACD,WAAO,IAAP;IACH;;IAnDwB;;ACA7B,uBAAe,CAAC0C,EAAD,EAAK7J,kBAAL,KAA4B;IACvC,MAAI6T,kBAAkB,GAAG,CACrB,2BADqB,EAErB,4BAFqB,EAGrB,4BAHqB,EAKrB,aALqB,EAMrB,GANqB,EAOrB,0BAPqB,EAQrB,+BARqB,EASrB,GATqB,EAUvBC,IAVuB,CAUlB,IAVkB,CAAzB;IAYA,MAAIC,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,EAoBzBD,IApByB,CAoBpB,IApBoB,CAA3B;;IAsBA,MAAI9T,kBAAJ,EAAwB;IACpB6J,IAAAA,EAAE,CAACmK,WAAH,CAAenK,EAAE,CAACoK,gBAAlB,EAAoC,CAApC;IACH;;IACD,MAAIC,YAAY,GAAGrK,EAAE,CAACsK,YAAH,CAAgBtK,EAAE,CAACuK,aAAnB,CAAnB;IACAvK,EAAAA,EAAE,CAACwK,YAAH,CAAgBH,YAAhB,EAA8BL,kBAA9B;IACAhK,EAAAA,EAAE,CAACyK,aAAH,CAAiBJ,YAAjB;;IACA,MAAI,CAACrK,EAAE,CAAC0K,kBAAH,CAAsBL,YAAtB,EAAoCrK,EAAE,CAAC2K,cAAvC,CAAL,EAA6D;IACzDlN,IAAAA,OAAO,CAACrF,GAAR,CAAY,sCAAsC4H,EAAE,CAAC4K,gBAAH,CAAoBP,YAApB,CAAlD;IACH;;IAED,MAAIQ,cAAc,GAAG7K,EAAE,CAACsK,YAAH,CAAgBtK,EAAE,CAAC8K,eAAnB,CAArB;IACA9K,EAAAA,EAAE,CAACwK,YAAH,CAAgBK,cAAhB,EAAgCX,oBAAhC;IACAlK,EAAAA,EAAE,CAACyK,aAAH,CAAiBI,cAAjB;;IACA,MAAI,CAAC7K,EAAE,CAAC0K,kBAAH,CAAsBG,cAAtB,EAAsC7K,EAAE,CAAC2K,cAAzC,CAAL,EAA+D;IAC3DlN,IAAAA,OAAO,CAACrF,GAAR,CAAY,wCAAwC4H,EAAE,CAAC4K,gBAAH,CAAoBC,cAApB,CAApD;IACH;;IAED,MAAIE,OAAO,GAAG/K,EAAE,CAACgL,aAAH,EAAd;IACAhL,EAAAA,EAAE,CAACiL,YAAH,CAAgBF,OAAhB,EAAyBV,YAAzB;IACArK,EAAAA,EAAE,CAACiL,YAAH,CAAgBF,OAAhB,EAAyBF,cAAzB;IACA7K,EAAAA,EAAE,CAACkL,WAAH,CAAeH,OAAf;;IACA,MAAI,CAAC/K,EAAE,CAACmL,mBAAH,CAAuBJ,OAAvB,EAAgC/K,EAAE,CAACoL,WAAnC,CAAL,EAAsD;IAClD3N,IAAAA,OAAO,CAACrF,GAAR,CAAY,gCAAgC4H,EAAE,CAACqL,iBAAH,CAAqBN,OAArB,CAA5C;IACH;;IAED/K,EAAAA,EAAE,CAACsL,UAAH,CAAcP,OAAd,EA5DuC;;IA+DvC,MAAIQ,eAAe,GAAGvL,EAAE,CAACwL,YAAH,EAAtB;IACAxL,EAAAA,EAAE,CAACyL,UAAH,CAAczL,EAAE,CAAC0L,YAAjB,EAA+BH,eAA/B;IACAvL,EAAAA,EAAE,CAAC2L,UAAH,CAAc3L,EAAE,CAAC0L,YAAjB,EAA+B,IAAIE,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+E5L,EAAE,CAAC6L,WAAlF;IAEA,MAAIC,YAAY,GAAG9L,EAAE,CAAC+L,iBAAH,CAAqBhB,OAArB,EAA8B,WAA9B,CAAnB;IACA/K,EAAAA,EAAE,CAACgM,uBAAH,CAA2BF,YAA3B;IACA9L,EAAAA,EAAE,CAACiM,mBAAH,CAAuBH,YAAvB,EAAqC,CAArC,EAAwC9L,EAAE,CAACkM,KAA3C,EAAkD,KAAlD,EAAyD,CAAzD,EAA4D,CAA5D;IAEA,MAAIC,gBAAgB,GAAGnM,EAAE,CAACwL,YAAH,EAAvB;IACAxL,EAAAA,EAAE,CAACyL,UAAH,CAAczL,EAAE,CAAC0L,YAAjB,EAA+BS,gBAA/B;IACAnM,EAAAA,EAAE,CAAC2L,UAAH,CAAc3L,EAAE,CAAC0L,YAAjB,EAA+B,IAAIE,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjB,CAA/B,EAA2E5L,EAAE,CAAC6L,WAA9E;IAEA,MAAIO,aAAa,GAAGpM,EAAE,CAAC+L,iBAAH,CAAqBhB,OAArB,EAA8B,YAA9B,CAApB;IACA/K,EAAAA,EAAE,CAACgM,uBAAH,CAA2BI,aAA3B;IACApM,EAAAA,EAAE,CAACiM,mBAAH,CAAuBG,aAAvB,EAAsC,CAAtC,EAAyCpM,EAAE,CAACkM,KAA5C,EAAmD,KAAnD,EAA0D,CAA1D,EAA6D,CAA7D;;IAEA,WAASG,YAAT,CAAsB/O,IAAtB,EAA4BgP,KAA5B,EAAmC;IAC/B,QAAIC,UAAU,GAAGvM,EAAE,CAACwM,aAAH,EAAjB;IACAxM,IAAAA,EAAE,CAACyM,WAAH,CAAezM,EAAE,CAAC0M,UAAlB,EAA8BH,UAA9B;IACAvM,IAAAA,EAAE,CAAC2M,aAAH,CAAiB3M,EAAE,CAAC0M,UAApB,EAAgC1M,EAAE,CAAC4M,kBAAnC,EAAuD5M,EAAE,CAAC6M,MAA1D;IACA7M,IAAAA,EAAE,CAAC2M,aAAH,CAAiB3M,EAAE,CAAC0M,UAApB,EAAgC1M,EAAE,CAAC8M,kBAAnC,EAAuD9M,EAAE,CAAC6M,MAA1D;IACA7M,IAAAA,EAAE,CAAC2M,aAAH,CAAiB3M,EAAE,CAAC0M,UAApB,EAAgC1M,EAAE,CAAC+M,cAAnC,EAAmD/M,EAAE,CAACgN,aAAtD;IACAhN,IAAAA,EAAE,CAAC2M,aAAH,CAAiB3M,EAAE,CAAC0M,UAApB,EAAgC1M,EAAE,CAACiN,cAAnC,EAAmDjN,EAAE,CAACgN,aAAtD;IACAhN,IAAAA,EAAE,CAACyM,WAAH,CAAezM,EAAE,CAAC0M,UAAlB,EAA8B,IAA9B;IACA1M,IAAAA,EAAE,CAACkN,SAAH,CAAalN,EAAE,CAACmN,kBAAH,CAAsBpC,OAAtB,EAA+BzN,IAA/B,CAAb,EAAmDgP,KAAnD;IACA,WAAOC,UAAP;IACH;;IAED,MAAIa,WAAW,GAAGf,YAAY,CAAC,UAAD,EAAa,CAAb,CAA9B;;IACA,MAAIgB,WAAW,GAAGhB,YAAY,CAAC,UAAD,EAAa,CAAb,CAA9B;;IACA,MAAIiB,WAAW,GAAGjB,YAAY,CAAC,UAAD,EAAa,CAAb,CAA9B;;IAEA,SAAO;IACH9V,IAAAA,MAAM,EAAE,UAAUgX,CAAV,EAAarI,CAAb,EAAgBsI,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyB;IAC7B1N,MAAAA,EAAE,CAAC2N,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkBJ,CAAlB,EAAqBrI,CAArB;IACAlF,MAAAA,EAAE,CAAC4N,aAAH,CAAiB5N,EAAE,CAAC6N,QAApB;IACA7N,MAAAA,EAAE,CAACyM,WAAH,CAAezM,EAAE,CAAC0M,UAAlB,EAA8BU,WAA9B;IACApN,MAAAA,EAAE,CAAC8N,UAAH,CAAc9N,EAAE,CAAC0M,UAAjB,EAA6B,CAA7B,EAAgC1M,EAAE,CAAC+N,SAAnC,EAA8CR,CAA9C,EAAiDrI,CAAjD,EAAoD,CAApD,EAAuDlF,EAAE,CAAC+N,SAA1D,EAAqE/N,EAAE,CAACgO,aAAxE,EAAuFR,CAAvF;IACAxN,MAAAA,EAAE,CAAC4N,aAAH,CAAiB5N,EAAE,CAACiO,QAApB;IACAjO,MAAAA,EAAE,CAACyM,WAAH,CAAezM,EAAE,CAAC0M,UAAlB,EAA8BW,WAA9B;IACArN,MAAAA,EAAE,CAAC8N,UAAH,CAAc9N,EAAE,CAAC0M,UAAjB,EAA6B,CAA7B,EAAgC1M,EAAE,CAAC+N,SAAnC,EAA8CR,CAAC,GAAG,CAAlD,EAAqDrI,CAAC,GAAG,CAAzD,EAA4D,CAA5D,EAA+DlF,EAAE,CAAC+N,SAAlE,EAA6E/N,EAAE,CAACgO,aAAhF,EAA+FP,CAA/F;IACAzN,MAAAA,EAAE,CAAC4N,aAAH,CAAiB5N,EAAE,CAACkO,QAApB;IACAlO,MAAAA,EAAE,CAACyM,WAAH,CAAezM,EAAE,CAAC0M,UAAlB,EAA8BY,WAA9B;IACAtN,MAAAA,EAAE,CAAC8N,UAAH,CAAc9N,EAAE,CAAC0M,UAAjB,EAA6B,CAA7B,EAAgC1M,EAAE,CAAC+N,SAAnC,EAA8CR,CAAC,GAAG,CAAlD,EAAqDrI,CAAC,GAAG,CAAzD,EAA4D,CAA5D,EAA+DlF,EAAE,CAAC+N,SAAlE,EAA6E/N,EAAE,CAACgO,aAAhF,EAA+FN,CAA/F;IACA1N,MAAAA,EAAE,CAACmO,UAAH,CAAcnO,EAAE,CAACoO,cAAjB,EAAiC,CAAjC,EAAoC,CAApC;IACH,KAbE;IAcH5U,IAAAA,OAAO,EAAE,YAAY;IACjB,UAAI;IACAwG,QAAAA,EAAE,CAACqO,aAAH,CAAiBtD,OAAjB;IAEA/K,QAAAA,EAAE,CAACsO,YAAH,CAAgB/C,eAAhB;IACAvL,QAAAA,EAAE,CAACsO,YAAH,CAAgBnC,gBAAhB;IAEAnM,QAAAA,EAAE,CAACuO,aAAH,CAAiBnB,WAAjB;IACApN,QAAAA,EAAE,CAACuO,aAAH,CAAiBlB,WAAjB;IACArN,QAAAA,EAAE,CAACsO,YAAH,CAAgBhB,WAAhB;IACH,OATD,CASE,OAAO9M,CAAP,EAAU;IAEX;IAEJ;IA5BE,GAAP;IA8BH,CA7HD;;ICGe,MAAMgO,cAAN,SAA2BvF,OAA3B,CAAmC;IAC9C7L,EAAAA,WAAW,GAAG;IACV;IACA,SAAK/G,IAAL,GAAY,KAAZ;IACH,GAJ6C;;;IAO9CoY,EAAAA,eAAe,CAAC9E,IAAD,EAAO;IAClB,QAAIA,IAAI,CAAC+E,WAAT,EAAsB;IAClB,WAAKzW,SAAL,CAAe0W,OAAf,GAAyB3T,cAAc,CAAC2O,IAAI,CAAC+E,WAAN,CAAvC;IACH;;IAED,QAAI/E,IAAI,CAACzK,KAAT,EAAgB;IACZ,WAAKjH,SAAL,CAAeiH,KAAf,GAAuByK,IAAI,CAACzK,KAA5B;IACH;;IAED,QAAIyK,IAAI,CAACrK,MAAT,EAAiB;IACb,WAAKrH,SAAL,CAAeqH,MAAf,GAAwBqK,IAAI,CAACrK,MAA7B;IACH,KAXiB;;;IAclB,QAAI,KAAKrH,SAAL,CAAe0W,OAAf,IAA0B,KAAK1W,SAAL,CAAeqH,MAAzC,IAAmD,KAAKrH,SAAL,CAAeiH,KAAlE,IAA2E,CAAC,KAAK7I,IAArF,EAA2F;IACvF,WAAKsI,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACQ,SAAxB,EAAmC,KAAKA,SAAxC;IACA,WAAK5B,IAAL,GAAY,IAAZ;IACH;IACJ;;IAzB6C;;ICGnC,MAAMuY,iBAAN,SAAgCJ,cAAhC,CAA6C;IAExDpR,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,UAAMoH,cAAc,GAAGpE,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAvB;IACAmE,IAAAA,cAAc,CAACzC,KAAf,CAAqBuL,QAArB,GAAgC,UAAhC;IACA9I,IAAAA,cAAc,CAACzC,KAAf,CAAqBwL,GAArB,GAA2B,CAA3B;IACA/I,IAAAA,cAAc,CAACzC,KAAf,CAAqByL,IAArB,GAA4B,CAA5B;IACA,SAAKvG,aAAL,GAAqBzC,cAArB;IACApH,IAAAA,MAAM,CAACK,UAAP,CAAkBgQ,WAAlB,CAA8B,KAAKxG,aAAnC;IAEA,SAAKyG,SAAL,GAAiB,IAAjB;IACA,SAAKC,SAAL,GAAiB,IAAjB;IACA,SAAKC,eAAL,GAAuB,IAAvB;IACA,SAAKC,gBAAL,GAAwB,IAAxB;IACA,SAAKC,cAAL,GAAsB,IAAtB;IACA,SAAKC,UAAL,GAAkB,IAAlB;IACA,SAAKrX,SAAL,GAAiB;IACbiH,MAAAA,KAAK,EAAE,EADM;IAEbI,MAAAA,MAAM,EAAE,EAFK;IAGbqP,MAAAA,OAAO,EAAE;IAHI,KAAjB,CAhBgB;;IAsBhB,SAAKY,iBAAL;;IACA,SAAK5Q,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,aAAtB,EAAqC,MAArC;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,QAAI,KAAK0V,SAAT,EAAoB;IAChB,WAAKA,SAAL,GAAiB,IAAjB;IACH;;IAED,QAAI,KAAKD,SAAT,EAAoB;IAChB,WAAKA,SAAL,GAAiB,IAAjB;IACH;;IAED,QAAI,KAAKE,eAAT,EAA0B;IACtB,WAAKC,gBAAL,IAAyB,KAAKA,gBAAL,EAAzB;IACA,WAAKA,gBAAL,GAAwB,IAAxB;IACA,WAAKD,eAAL,GAAuB,IAAvB;IACH;;IACD,QAAI,KAAKE,cAAT,EAAyB;IACrB,WAAKA,cAAL,GAAsB,IAAtB;IACH;;IAED,SAAKC,UAAL,GAAkB,IAAlB;IAEA,SAAKrX,SAAL,GAAiB;IACbiH,MAAAA,KAAK,EAAE,EADM;IAEbI,MAAAA,MAAM,EAAE,EAFK;IAGbqP,MAAAA,OAAO,EAAE,EAHI;IAIbD,MAAAA,WAAW,EAAE;IAJA,KAAjB;IAOA,SAAK/P,MAAL,CAAYK,UAAZ,CAAuBwQ,WAAvB,CAAmC,KAAKhH,aAAxC;IACA,SAAKnS,IAAL,GAAY,KAAZ;IACA,SAAKsR,GAAL;IACA,SAAKhJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAuB,mBAAvB,EAA2C,SAA3C;IACH;;IAGDqX,EAAAA,cAAc,GAAG;IACb,SAAKP,SAAL,GAAiBnP,eAAe,CAAC,KAAKyI,aAAN,CAAhC;IACA,UAAMrM,KAAK,GAAGuT,WAAW,CAAC,KAAKR,SAAN,EAAiB,KAAKvQ,MAAL,CAAYpB,IAAZ,CAAiBpH,kBAAlC,CAAzB;IACA,SAAKgZ,eAAL,GAAuBhT,KAAK,CAAC5F,MAA7B;IACA,SAAK6Y,gBAAL,GAAwBjT,KAAK,CAAC3C,OAA9B;IACH;;IAEDmW,EAAAA,cAAc,GAAG;IACb,SAAKV,SAAL,GAAiB,KAAKzG,aAAL,CAAmBjI,UAAnB,CAA8B,IAA9B,CAAjB;IACH,GAvEuD;;;IA2ExDgP,EAAAA,iBAAiB,GAAG;IAChB,QAAI,KAAK5Q,MAAL,CAAYpB,IAAZ,CAAiBzH,MAAjB,IAA2B,CAAC,KAAK8Z,iBAAL,EAAhC,EAA0D;IACtD,WAAKN,UAAL,GAAkBrT,kBAAkB,CAACC,SAArC;;IACA,WAAKyT,cAAL;IACH,KAHD,MAGO,IAAI,KAAKC,iBAAL,EAAJ,EAA8B;IACjC,WAAKN,UAAL,GAAkBrT,kBAAkB,CAACG,SAArC;;IACA,WAAKyT,cAAL;IACH,KAHM,MAGA;IACH,WAAKP,UAAL,GAAkBrT,kBAAkB,CAACE,KAArC;;IACA,WAAKsT,cAAL;IACH;IACJ;;IAEDG,EAAAA,iBAAiB,GAAG;IAChB,WAAOlQ,gBAAgB,CAAC,KAAK8I,aAAN,CAAhB,IAAwC,KAAK7J,MAAL,CAAYpB,IAAZ,CAAiBvH,YAAhE;IACH,GA1FuD;;;IA6FxD6Z,EAAAA,cAAc,GAAG;IACb,SAAKR,cAAL,GAAsB,KAAK7G,aAAL,CAAmBjI,UAAnB,CAA8B,gBAA9B,CAAtB;IACH;;IAEDuP,EAAAA,kBAAkB,GAAG;IACjB,SAAKtH,aAAL,CAAmBtJ,KAAnB,GAA2B,KAAKjH,SAAL,CAAeiH,KAA1C;IACA,SAAKsJ,aAAL,CAAmBlJ,MAAnB,GAA4B,KAAKrH,SAAL,CAAeqH,MAA3C;IACA,SAAKpG,MAAL;IACH,GArGuD;;;IAwGxD3C,EAAAA,MAAM,CAACwZ,GAAD,EAAM;IACR,SAAKpR,MAAL,CAAYyI,cAAZ,GAA6B2I,GAAG,CAACC,EAAjC;;IACA,YAAQ,KAAKV,UAAb;IACI,WAAKrT,kBAAkB,CAACG,SAAxB;IACI,aAAKiT,cAAL,CAAoBY,uBAApB,CAA4CF,GAAG,CAACjX,MAAhD;IACA;;IACJ,WAAKmD,kBAAkB,CAACE,KAAxB;IACI,aAAKgT,eAAL,CAAqB,KAAK3G,aAAL,CAAmBtJ,KAAxC,EAA+C,KAAKsJ,aAAL,CAAmBlJ,MAAlE,EAA0EyQ,GAAG,CAACG,MAAJ,CAAW,CAAX,CAA1E,EAAyFH,GAAG,CAACG,MAAJ,CAAW,CAAX,CAAzF,EAAwGH,GAAG,CAACG,MAAJ,CAAW,CAAX,CAAxG;IACA;;IACJ,WAAKjU,kBAAkB,CAACC,SAAxB;IACI,aAAK+S,SAAL,CAAekB,SAAf,CAAyBJ,GAAG,CAAChX,UAA7B,EAAyC,CAAzC,EAA4C,CAA5C,EAA+C,KAAKyP,aAAL,CAAmBtJ,KAAlE,EAAyE,KAAKsJ,aAAL,CAAmBlJ,MAA5F;IACA;IATR;IAWH;;IAEDvK,EAAAA,UAAU,CAACqb,QAAD,EAAWC,MAAX,EAAmBC,OAAnB,EAA4BtP,IAA5B,EAAkC;IACxCoP,IAAAA,QAAQ,GAAGA,QAAQ,IAAIhO,GAAG,EAA1B;IACApB,IAAAA,IAAI,GAAGA,IAAI,IAAIpG,eAAe,CAACC,QAA/B;IACA,UAAM0V,UAAU,GAAG;IACfC,MAAAA,GAAG,EAAE,WADU;IAEfC,MAAAA,IAAI,EAAE,YAFS;IAGfC,MAAAA,IAAI,EAAE;IAHS,KAAnB;IAKA,QAAIC,cAAc,GAAG,IAArB;;IACA,QAAI,CAACJ,UAAU,CAACF,MAAD,CAAX,IAAuBzV,eAAe,CAACyV,MAAD,CAA1C,EAAoD;IAChDrP,MAAAA,IAAI,GAAGqP,MAAP;IACAA,MAAAA,MAAM,GAAG,KAAT;IACAC,MAAAA,OAAO,GAAGjK,SAAV;IACH;;IAED,QAAI,OAAOiK,OAAP,KAAmB,QAAvB,EAAiC;IAC7BtP,MAAAA,IAAI,GAAGsP,OAAP;IACAA,MAAAA,OAAO,GAAGjK,SAAV;IACH;;IAED,QAAI,OAAOiK,OAAP,KAAmB,WAAvB,EAAoC;IAChCK,MAAAA,cAAc,GAAGC,MAAM,CAACN,OAAD,CAAvB;IACH;;IACD,UAAM3P,OAAO,GAAG,KAAK6H,aAAL,CAAmBqI,SAAnB,CAA6BN,UAAU,CAACF,MAAD,CAAV,IAAsBE,UAAU,CAACC,GAA9D,EAAmEG,cAAnE,CAAhB;IAEA,UAAMG,IAAI,GAAGpQ,aAAa,CAACC,OAAD,CAA1B;;IACA,QAAIK,IAAI,KAAKpG,eAAe,CAACE,MAA7B,EAAqC;IACjC,aAAO6F,OAAP;IACH,KAFD,MAEO,IAAIK,IAAI,KAAKpG,eAAe,CAACG,IAA7B,EAAmC;IACtC,aAAO+V,IAAP;IACH,KAFM,MAEA,IAAI9P,IAAI,KAAKpG,eAAe,CAACC,QAA7B,EAAuC;IAC1C0G,MAAAA,WAAW,CAACuP,IAAD,EAAOV,QAAP,CAAX;IACH;IACJ,GAxJuD;;;IA2JxDW,EAAAA,SAAS,GAAG;IACR,YAAQ,KAAKzB,UAAb;IACI,WAAKrT,kBAAkB,CAACG,SAAxB;IACI0J,QAAAA,sBAAsB,CAAC,KAAK0C,aAAL,CAAmBtJ,KAApB,EAA2B,KAAKsJ,aAAL,CAAmBlJ,MAA9C,CAAtB,CAA4EwI,IAA5E,CAAkFkJ,WAAD,IAAiB;IAC9F,eAAK3B,cAAL,CAAoBY,uBAApB,CAA4Ce,WAA5C;IACH,SAFD;IAGA;;IACJ,WAAK/U,kBAAkB,CAACE,KAAxB;IACI,aAAK+S,SAAL,CAAe+B,KAAf,CAAqB,KAAK/B,SAAL,CAAegC,gBAApC;IACA;;IACJ,WAAKjV,kBAAkB,CAACC,SAAxB;IACI,aAAK+S,SAAL,CAAekC,SAAf,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,KAAK3I,aAAL,CAAmBtJ,KAAlD,EAAyD,KAAKsJ,aAAL,CAAmBlJ,MAA5E;IACA;IAXR;IAaH;;IAEDpG,EAAAA,MAAM,GAAG;IACL,SAAKyF,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,aAAtB,EAAqC,QAArC;IACA,UAAM6F,MAAM,GAAG,KAAKU,MAAL,CAAYpB,IAA3B;IACA,UAAM2B,KAAK,GAAG,KAAKP,MAAL,CAAYO,KAA1B;IACA,QAAII,MAAM,GAAG,KAAKX,MAAL,CAAYW,MAAzB;;IACA,QAAIrB,MAAM,CAAC7I,UAAP,IAAqB,CAAC6I,MAAM,CAAC9I,eAAjC,EAAkD;IAC9CmK,MAAAA,MAAM,IAAI7D,cAAV;IACH;;IACD,QAAI2V,WAAW,GAAG,KAAK5I,aAAL,CAAmBtJ,KAArC;IACA,QAAImS,YAAY,GAAG,KAAK7I,aAAL,CAAmBlJ,MAAtC;IACA,UAAM7J,MAAM,GAAGwI,MAAM,CAACxI,MAAtB;IACA,QAAIsZ,IAAI,GAAI,CAAC7P,KAAK,GAAGkS,WAAT,IAAwB,CAApC;IACA,QAAItC,GAAG,GAAI,CAACxP,MAAM,GAAG+R,YAAV,IAA0B,CAArC;;IACA,QAAI5b,MAAM,KAAK,GAAX,IAAkBA,MAAM,KAAK,EAAjC,EAAqC;IACjC2b,MAAAA,WAAW,GAAG,KAAK5I,aAAL,CAAmBlJ,MAAjC;IACA+R,MAAAA,YAAY,GAAG,KAAK7I,aAAL,CAAmBtJ,KAAlC;IACH;;IAED,UAAMoS,MAAM,GAAGpS,KAAK,GAAGkS,WAAvB;IACA,UAAMG,MAAM,GAAGjS,MAAM,GAAG+R,YAAxB;IAEA,QAAIzI,KAAK,GAAG0I,MAAM,GAAGC,MAAT,GAAkBA,MAAlB,GAA2BD,MAAvC,CArBK;;IAuBL,QAAI,CAACrT,MAAM,CAACtK,QAAZ,EAAsB;IAClB,UAAI2d,MAAM,KAAKC,MAAf,EAAuB;IACnB3I,QAAAA,KAAK,GAAG0I,MAAM,GAAG,GAAT,GAAeC,MAAvB;IACH;IACJ,KA3BI;;;IA6BL,QAAItT,MAAM,CAACrK,YAAX,EAAyB;IACrBgV,MAAAA,KAAK,GAAG0I,MAAM,GAAGC,MAAT,GAAkBD,MAAlB,GAA2BC,MAAnC;IACH;;IACD,QAAI1I,SAAS,GAAG,WAAWD,KAAX,GAAmB,GAAnC;;IAEA,QAAInT,MAAJ,EAAY;IACRoT,MAAAA,SAAS,IAAI,aAAapT,MAAb,GAAsB,MAAnC;IACH;;IAED,SAAK+S,aAAL,CAAmBlF,KAAnB,CAAyBuF,SAAzB,GAAqCA,SAArC;IACA,SAAKL,aAAL,CAAmBlF,KAAnB,CAAyByL,IAAzB,GAAgCA,IAAI,GAAG,IAAvC;IACA,SAAKvG,aAAL,CAAmBlF,KAAnB,CAAyBwL,GAAzB,GAA+BA,GAAG,GAAG,IAArC;IACH;;IApNuD;;ICD7C,MAAM0C,WAAN,SAA0BhD,cAA1B,CAAuC;IAClDpR,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,UAAM6J,aAAa,GAAG7G,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAtB;IACA4G,IAAAA,aAAa,CAACiJ,KAAd,GAAsB,IAAtB;IACAjJ,IAAAA,aAAa,CAAClF,KAAd,CAAoBuL,QAApB,GAA+B,UAA/B;IACArG,IAAAA,aAAa,CAAClF,KAAd,CAAoBwL,GAApB,GAA0B,CAA1B;IACAtG,IAAAA,aAAa,CAAClF,KAAd,CAAoByL,IAApB,GAA2B,CAA3B;IACApQ,IAAAA,MAAM,CAACK,UAAP,CAAkBgQ,WAAlB,CAA8BxG,aAA9B;IACA,SAAKA,aAAL,GAAqBA,aAArB;IACA,SAAKvQ,SAAL,GAAiB;IACbiH,MAAAA,KAAK,EAAE,EADM;IAEbI,MAAAA,MAAM,EAAE,EAFK;IAGbqP,MAAAA,OAAO,EAAE;IAHI,KAAjB;IAKA,SAAKzV,MAAL;IAEA,UAAM;IAAC2E,MAAAA;IAAD,QAAU,KAAKc,MAAL,CAAY+I,MAA5B;IAEA7J,IAAAA,KAAK,CAAC,KAAK2K,aAAN,EAAqB,SAArB,EAAgC,MAAM;IACvC,WAAK7J,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,OAAtB,EAA+B,SAA/B;IACH,KAFI,CAAL;IAIAyF,IAAAA,KAAK,CAAC,KAAK2K,aAAN,EAAqB,SAArB,EAAgC,MAAM;IACvC,WAAK7J,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACoC,YAAxB;IACH,KAFI,CAAL;IAIAgE,IAAAA,KAAK,CAAC,KAAK2K,aAAN,EAAqB,YAArB,EAAoC9J,KAAD,IAAW;IAElD,KAFI,CAAL;IAIA,SAAKC,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,OAAtB,EAA+B,MAA/B;IAEH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,SAAKmF,MAAL,CAAYK,UAAZ,CAAuBwQ,WAAvB,CAAmC,KAAKhH,aAAxC;IACA,SAAKA,aAAL,GAAqB,IAArB;IACA,SAAKnS,IAAL,GAAY,KAAZ;IACA,SAAKsR,GAAL;IACA,SAAKhJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,OAAtB,EAA+B,SAA/B;IACH;;IAEDpD,EAAAA,IAAI,GAAG;IACH;IACA,SAAKwT,aAAL,CAAmBxT,IAAnB;IACH;;IAED+b,EAAAA,SAAS,GAAG;;IAIZhc,EAAAA,UAAU,CAACqb,QAAD,EAAWC,MAAX,EAAmBC,OAAnB,EAA4BtP,IAA5B,EAAkC;IACxCoP,IAAAA,QAAQ,GAAGA,QAAQ,IAAIhO,GAAG,EAA1B;IACApB,IAAAA,IAAI,GAAGA,IAAI,IAAIpG,eAAe,CAACC,QAA/B;IACA,UAAM0V,UAAU,GAAG;IACfC,MAAAA,GAAG,EAAE,WADU;IAEfC,MAAAA,IAAI,EAAE,YAFS;IAGfC,MAAAA,IAAI,EAAE;IAHS,KAAnB;IAKA,QAAIC,cAAc,GAAG,IAArB;;IACA,QAAI,CAACJ,UAAU,CAACF,MAAD,CAAX,IAAuBzV,eAAe,CAACyV,MAAD,CAA1C,EAAoD;IAChDrP,MAAAA,IAAI,GAAGqP,MAAP;IACAA,MAAAA,MAAM,GAAG,KAAT;IACAC,MAAAA,OAAO,GAAGjK,SAAV;IACH;;IACD,QAAI,OAAOiK,OAAP,KAAmB,QAAvB,EAAiC;IAC7BtP,MAAAA,IAAI,GAAGsP,OAAP;IACAA,MAAAA,OAAO,GAAGjK,SAAV;IACH;;IAED,QAAI,OAAOiK,OAAP,KAAmB,WAAvB,EAAoC;IAChCK,MAAAA,cAAc,GAAGC,MAAM,CAACN,OAAD,CAAvB;IACH;;IACD,UAAMoB,MAAM,GAAG,KAAKlJ,aAApB;IACA,QAAImJ,MAAM,GAAGhQ,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;IACA+P,IAAAA,MAAM,CAACzS,KAAP,GAAewS,MAAM,CAACE,UAAtB;IACAD,IAAAA,MAAM,CAACrS,MAAP,GAAgBoS,MAAM,CAACG,WAAvB;IACA,UAAMC,OAAO,GAAGH,MAAM,CAACpR,UAAP,CAAkB,IAAlB,CAAhB;IACAuR,IAAAA,OAAO,CAAC3B,SAAR,CAAkBuB,MAAlB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgCC,MAAM,CAACzS,KAAvC,EAA8CyS,MAAM,CAACrS,MAArD;IACA,UAAMqB,OAAO,GAAGgR,MAAM,CAACd,SAAP,CAAiBjW,eAAe,CAACyV,MAAD,CAAf,IAA2BzV,eAAe,CAAC4V,GAA5D,EAAiEG,cAAjE,CAAhB;IACA,UAAMG,IAAI,GAAGpQ,aAAa,CAACC,OAAD,CAA1B;;IACA,QAAIK,IAAI,KAAKpG,eAAe,CAACE,MAA7B,EAAqC;IACjC,aAAO6F,OAAP;IACH,KAFD,MAEO,IAAIK,IAAI,KAAKpG,eAAe,CAACG,IAA7B,EAAmC;IACtC,aAAO+V,IAAP;IACH,KAFM,MAEA,IAAI9P,IAAI,KAAKpG,eAAe,CAACC,QAA7B,EAAuC;IAC1C0G,MAAAA,WAAW,CAACuP,IAAD,EAAOV,QAAP,CAAX;IACH;IACJ;;IAEDN,EAAAA,kBAAkB,GAAG;IACjB,SAAK5W,MAAL;IACH;;IAEDA,EAAAA,MAAM,GAAG;IACL,SAAKsP,aAAL,CAAmBtJ,KAAnB,GAA2B,KAAKP,MAAL,CAAYO,KAAvC;IACA,SAAKsJ,aAAL,CAAmBlJ,MAAnB,GAA6B,KAAKX,MAAL,CAAYpB,IAAZ,CAAiBnI,UAAjB,IAA+B,CAAC,KAAKuJ,MAAL,CAAYpB,IAAZ,CAAiBpI,eAAlD,GAAqE,KAAKwJ,MAAL,CAAYW,MAAZ,GAAqB7D,cAA1F,GAA2G,KAAKkD,MAAL,CAAYW,MAAnJ;IACA,UAAMrB,MAAM,GAAG,KAAKU,MAAL,CAAYpB,IAA3B;IACA,QAAIwU,UAAU,GAAG,SAAjB;IACA,UAAMtc,MAAM,GAAGwI,MAAM,CAACxI,MAAtB,CALK;IAQL;IAEA;;IACA,QAAI,CAACwI,MAAM,CAACtK,QAAZ,EAAsB;IAClBoe,MAAAA,UAAU,GAAG,MAAb;IACH,KAbI;;;IAgBL,QAAI9T,MAAM,CAACrK,YAAX,EAAyB;IACrBme,MAAAA,UAAU,GAAG,MAAb;IACH;;IACD,SAAKvJ,aAAL,CAAmBlF,KAAnB,CAAyB0O,SAAzB,GAAqCD,UAArC;IACA,SAAKvJ,aAAL,CAAmBlF,KAAnB,CAAyBuF,SAAzB,GAAqC,YAAYpT,MAAZ,GAAqB,MAA1D;IACH;;IArHiD;;ICFvC,MAAMwc,KAAN,CAAY;IACvB7U,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMuT,MAAM,GAAGD,KAAK,CAACE,gBAAN,CAAuBxT,MAAM,CAACpB,IAA9B,CAAf;IACA,WAAO,IAAI2U,MAAJ,CAAWvT,MAAX,CAAP;IACH;;IAEsB,SAAhBwT,gBAAgB,CAACC,GAAD,EAAM;IACzB,QAAIA,GAAG,CAACrc,MAAR,EAAgB;IACZ,aAAOyb,WAAP;IACH,KAFD,MAEO;IACH,aAAO5C,iBAAP;IACH;IACJ;;IAZsB;;ICCZ,MAAMyD,kBAAN,SAAiCpJ,OAAjC,CAAyC;IACpD7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAK2T,UAAL,GAAkB,EAAlB;IACA,SAAK3T,MAAL,GAAcA,MAAd;IACA,SAAK4T,UAAL,GAAkB,IAAlB;IACA,SAAKC,iBAAL,GAAyB,KAAzB;IACA,SAAKC,mBAAL,GAA2B,IAA3B;IAEA,SAAKC,YAAL,GAAoB,KAAKrO,MAAM,CAACsO,YAAP,IAAuBtO,MAAM,CAACuO,kBAAnC,GAApB,CARgB;;IAUhB,SAAKC,QAAL,GAAgB,KAAKH,YAAL,CAAkBI,UAAlB,EAAhB,CAVgB;IAYhB;;IACA,UAAMC,MAAM,GAAG,KAAKL,YAAL,CAAkBM,kBAAlB,EAAf,CAbgB;;IAehBD,IAAAA,MAAM,CAACja,MAAP,GAAgB,KAAK4Z,YAAL,CAAkBlH,YAAlB,CAA+B,CAA/B,EAAkC,CAAlC,EAAqC,KAArC,CAAhB,CAfgB;IAiBhB;;IACAuH,IAAAA,MAAM,CAACE,OAAP,CAAe,KAAKP,YAAL,CAAkBQ,WAAjC,EAlBgB;IAoBhB;;IACA,QAAIH,MAAM,CAACI,MAAX,EAAmB;IACfJ,MAAAA,MAAM,CAACI,MAAP,CAAc,CAAd;IACH,KAFD,MAEO;IACHJ,MAAAA,MAAM,CAAC/Z,KAAP,CAAa,CAAb;IACH;;IACD,SAAKoa,qBAAL,GAA6BL,MAA7B,CA1BgB;;IA4BhB,SAAKM,+BAAL,GAAuC,KAAKX,YAAL,CAAkBY,4BAAlB,EAAvC,CA5BgB;;IA8BhB,SAAKC,YAAL,CAAkB,IAAlB,EA9BgB;;IAgChB,SAAKV,QAAL,CAAcW,IAAd,CAAmBpQ,KAAnB,GAA2B,CAA3B;IAEA,SAAKxL,OAAL,GAAe,KAAf,CAlCgB;;IAoChB,SAAK6b,oBAAL,GAA4B;IACxBC,MAAAA,IAAI,EAAE;IADkB,KAA5B;IAKA,SAAKvb,SAAL,GAAiB;IACbwW,MAAAA,OAAO,EAAE,EADI;IAEbgF,MAAAA,QAAQ,EAAE,EAFG;IAGbC,MAAAA,UAAU,EAAE;IAHC,KAAjB;IAKA,SAAKvd,IAAL,GAAY,KAAZ;IACA,SAAK1B,QAAL,GAAgB,KAAhB,CA/CgB;;IAkDhB,SAAK8S,EAAL,CAAQhQ,MAAM,CAACsC,cAAf,EAAgC8Z,OAAD,IAAa;IACxC;IACA,WAAKJ,oBAAL,GAA4BI,OAA5B;IACH,KAHD;IAKA,SAAKlV,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,cAAtB,EAAsC,MAAtC;IACH;;IAGDoB,EAAAA,OAAO,GAAG;IACN,SAAKsa,UAAL;IACA,SAAKpB,YAAL,CAAkBnb,KAAlB;IACA,SAAKmb,YAAL,GAAoB,IAApB;IACA,SAAKG,QAAL,GAAgB,IAAhB;IACA,SAAKxc,IAAL,GAAY,KAAZ;IACA,SAAK1B,QAAL,GAAgB,KAAhB;IACA,SAAKiD,OAAL,GAAe,KAAf;;IAEA,QAAI,KAAK2a,UAAT,EAAqB;IACjB,WAAKA,UAAL,CAAgBwB,cAAhB,GAAiCtU,IAAjC;IACA,WAAK8S,UAAL,GAAkB,IAAlB;IACH;;IACD,SAAKa,qBAAL,GAA6B,IAA7B;IACA,SAAKC,+BAAL,GAAuC,IAAvC;IACA,SAAKb,iBAAL,GAAyB,KAAzB;IACA,SAAKiB,oBAAL,GAA4B;IACxBC,MAAAA,IAAI,EAAE;IADkB,KAA5B;IAGA,SAAKvb,SAAL,GAAiB;IACbwW,MAAAA,OAAO,EAAE,EADI;IAEbgF,MAAAA,QAAQ,EAAE,EAFG;IAGbC,MAAAA,UAAU,EAAE;IAHC,KAAjB;IAKA,SAAKjM,GAAL;IACA,SAAKhJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,cAAtB,EAAsC,SAAtC;IACH;;IAED4b,EAAAA,eAAe,CAACrK,IAAD,EAAO;IAClB,QAAIA,IAAI,CAAC+E,WAAT,EAAsB;IAClB,WAAKvW,SAAL,CAAewW,OAAf,GAAyBvT,cAAc,CAACuO,IAAI,CAAC+E,WAAN,CAAvC;IACH;;IAED,QAAI/E,IAAI,CAACgK,QAAT,EAAmB;IACf,WAAKxb,SAAL,CAAewb,QAAf,GAA0BhK,IAAI,CAACgK,QAA/B;IACH;;IAED,QAAIhK,IAAI,CAACiK,UAAT,EAAqB;IACjB,WAAKzb,SAAL,CAAeyb,UAAf,GAA4BjK,IAAI,CAACiK,UAAjC;IACH,KAXiB;;;IAclB,QAAI,KAAKzb,SAAL,CAAeyb,UAAf,IAA6B,KAAKzb,SAAL,CAAewb,QAA5C,IAAwD,KAAKxb,SAAL,CAAewW,OAAvE,IAAkF,CAAC,KAAKtY,IAA5F,EAAkG;IAC9F,WAAKsI,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACU,SAAxB,EAAmC,KAAKA,SAAxC;IACA,WAAK9B,IAAL,GAAY,IAAZ;IACH;IACJ,GA1GmD;;;IA6GvC,MAAT4d,SAAS,GAAG;IACZ,WAAO,KAAKrc,OAAZ;IACH;;IAES,MAANsc,MAAM,GAAG;IACT,WAAO,KAAKrB,QAAL,CAAcW,IAAd,CAAmBpQ,KAAnB,KAA6B,CAA7B,IAAkC,KAAK+Q,gBAAL,EAAzC;IACH;;IAES,MAANC,MAAM,GAAG;IACT,WAAO,KAAKvB,QAAL,CAAcW,IAAd,CAAmBpQ,KAA1B;IACH;;IAEa,MAAViR,UAAU,GAAG;IACb,WAAO,KAAK/B,UAAL,CAAgBnS,MAAvB;IACH;;IAGDmU,EAAAA,cAAc,GAAG;IACb,SAAK1c,OAAL,GAAe,IAAf;;IAEA,QAAI,KAAK4a,iBAAT,EAA4B;IACxB;IACH;;IACD,UAAMmB,QAAQ,GAAG,KAAKxb,SAAL,CAAewb,QAAhC;IAEA,UAAMpB,UAAU,GAAG,KAAKG,YAAL,CAAkB6B,qBAAlB,CAAwC,IAAxC,EAA8C,CAA9C,EAAiDZ,QAAjD,CAAnB,CARa;;IAUbpB,IAAAA,UAAU,CAACwB,cAAX,GAA6BS,oBAAD,IAA0B;IAClD,YAAMC,YAAY,GAAGD,oBAAoB,CAACC,YAA1C;;IAEA,UAAI,KAAKnC,UAAL,CAAgBnS,MAAhB,IAA0B,KAAKvI,OAAnC,EAA4C;IACxC;IACA,YAAI,CAAC,KAAK+G,MAAL,CAAYpB,IAAZ,CAAiBzH,MAAlB,IAA4B,CAAC,KAAK6I,MAAL,CAAYpB,IAAZ,CAAiBxH,MAAlD,EAA0D;IACtD;IACA;IACA,cAAI,KAAK0d,oBAAL,CAA0BC,IAA1B,GAAiC5W,qBAArC,EAA4D;IACxD,iBAAK6B,MAAL,CAAY7K,KAAZ,CAAkB4J,IAAlB,CAAuB,cAAvB,EAAwC,wCAAuC,KAAK+V,oBAAL,CAA0BC,IAAK,WAA9G,EADwD;;IAGxD;IACH,WAJD;IAMA;IANA,eAOK,IAAI,KAAKD,oBAAL,CAA0BC,IAA1B,GAAiC,CAAC5W,qBAAtC,EAA6D;IAC9D,iBAAK6B,MAAL,CAAY7K,KAAZ,CAAkB4J,IAAlB,CAAuB,cAAvB,EAAwC,wCAAuC,KAAK+V,oBAAL,CAA0BC,IAAK,YAA9G,EAD8D;;IAI9D,gBAAIgB,UAAU,GAAG,KAAKpC,UAAL,CAAgBqC,KAAhB,EAAjB,CAJ8D;;IAM9D,mBAAQD,UAAU,CAAC1E,EAAX,GAAgB,KAAKrR,MAAL,CAAYyI,cAA5B,GAA6C,CAACtK,qBAA/C,IAAyE,KAAKwV,UAAL,CAAgBnS,MAAhB,GAAyB,CAAzG,EAA4G;IACxG;IACAuU,cAAAA,UAAU,GAAG,KAAKpC,UAAL,CAAgBqC,KAAhB,EAAb;IACH;;IAED,gBAAI,KAAKrC,UAAL,CAAgBnS,MAAhB,KAA2B,CAA/B,EAAkC;IAC9B;IACH;IACJ;IACJ;;IAED,YAAI,KAAKmS,UAAL,CAAgBnS,MAAhB,KAA2B,CAA/B,EAAkC;IAC9B;IACH;;IAED,cAAMuU,UAAU,GAAG,KAAKpC,UAAL,CAAgBqC,KAAhB,EAAnB,CAjCwC;;IAoCxC,YAAID,UAAU,IAAIA,UAAU,CAAC1E,EAA7B,EAAiC;IAC7B,eAAKrR,MAAL,CAAYiW,cAAZ,GAA6BF,UAAU,CAAC1E,EAAxC;IACH;;IAED,aAAK,IAAI6E,OAAO,GAAG,CAAnB,EAAsBA,OAAO,GAAGlB,QAAhC,EAA0CkB,OAAO,EAAjD,EAAqD;IACjD,gBAAM7R,CAAC,GAAG0R,UAAU,CAAC5b,MAAX,CAAkB+b,OAAlB,CAAV;IACA,gBAAMC,YAAY,GAAGL,YAAY,CAACM,cAAb,CAA4BF,OAA5B,CAArB;;IACA,eAAK,IAAIjL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAApB,EAA0BA,CAAC,EAA3B,EAA+B;IAC3BkL,YAAAA,YAAY,CAAClL,CAAD,CAAZ,GAAkB5G,CAAC,CAAC4G,CAAD,CAAD,IAAQ,CAA1B;IACH;IACJ;IACJ;IACJ,KAnDD;;IAqDA2I,IAAAA,UAAU,CAACU,OAAX,CAAmB,KAAKJ,QAAxB;IACA,SAAKN,UAAL,GAAkBA,UAAlB;IACA,SAAKM,QAAL,CAAcI,OAAd,CAAsB,KAAKP,YAAL,CAAkBQ,WAAxC;IACA,SAAKL,QAAL,CAAcI,OAAd,CAAsB,KAAKI,+BAA3B;IACA,SAAKb,iBAAL,GAAyB,IAAzB;IACH;;IAED1a,EAAAA,IAAI,CAACkd,IAAD,EAAO;IACP,QAAIA,IAAJ,EAAU;IACN,UAAI,CAAC,KAAKd,MAAV,EAAkB;IACd,aAAKvV,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACK,IAAxB,EAA8Bkd,IAA9B;IACH;;IACD,WAAKC,SAAL,CAAe,CAAf;IACA,WAAK1B,YAAL,CAAkB,KAAlB;IACA,WAAKtC,KAAL;IACH,KAPD,MAOO;IACH,UAAI,KAAKiD,MAAT,EAAiB;IACb,aAAKvV,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACK,IAAxB,EAA8Bkd,IAA9B;IACH;;IACD,WAAKC,SAAL,CAAe,GAAf;IACA,WAAK1B,YAAL,CAAkB,IAAlB;IACH;IACJ;;IAED0B,EAAAA,SAAS,CAACb,MAAD,EAAS;IACdA,IAAAA,MAAM,GAAGzQ,UAAU,CAACyQ,MAAD,CAAV,CAAmB1O,OAAnB,CAA2B,CAA3B,CAAT;;IACA,QAAIwP,KAAK,CAACd,MAAD,CAAT,EAAmB;IACf;IACH;;IACD,SAAKb,YAAL,CAAkB,IAAlB;IACAa,IAAAA,MAAM,GAAGvR,KAAK,CAACuR,MAAD,EAAS,CAAT,EAAY,CAAZ,CAAd;IACA,SAAKvB,QAAL,CAAcW,IAAd,CAAmBpQ,KAAnB,GAA2BgR,MAA3B;IACA,SAAKvB,QAAL,CAAcW,IAAd,CAAmB2B,cAAnB,CAAkCf,MAAlC,EAA0C,KAAK1B,YAAL,CAAkB0C,WAA5D;IACA,SAAKzW,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAAC8B,YAAxB,EAAsC,KAAKoF,MAAL,CAAYyV,MAAlD;IACH;;IAEDN,EAAAA,UAAU,GAAG;IACT,QAAI,KAAKtB,iBAAT,EAA4B;IACxB,WAAKD,UAAL,IAAmB,KAAKA,UAAL,CAAgB8C,UAAhB,CAA2B,KAAKxC,QAAhC,CAAnB;IACA,WAAKA,QAAL,IAAiB,KAAKA,QAAL,CAAcwC,UAAd,CAAyB,KAAK3C,YAAL,CAAkBQ,WAA3C,CAAjB;IACA,WAAKL,QAAL,IAAiB,KAAKA,QAAL,CAAcwC,UAAd,CAAyB,KAAKhC,+BAA9B,CAAjB;IACH;;IACD,SAAKpC,KAAL;IACH,GAxOmD;;;IA2OpDsC,EAAAA,YAAY,CAACyB,IAAD,EAAO;IACf,QAAIA,IAAJ,EAAU;IACN,UAAI,KAAKtC,YAAL,CAAkB4C,KAAlB,KAA4B,WAAhC,EAA6C;IACzC;IACA,aAAK5C,YAAL,CAAkB6C,MAAlB;IACH;IACJ,KALD,MAKO;IACH,UAAI,KAAK7C,YAAL,CAAkB4C,KAAlB,KAA4B,SAAhC,EAA2C;IACvC;IACA,aAAK5C,YAAL,CAAkB8C,OAAlB;IACH;IACJ;IACJ;;IAEDC,EAAAA,cAAc,GAAG;IACb,WAAO,KAAK/C,YAAL,CAAkB4C,KAAlB,KAA4B,SAAnC;IACH;;IAEDnB,EAAAA,gBAAgB,GAAG;IACf,WAAO,KAAKzB,YAAL,CAAkB4C,KAAlB,KAA4B,WAAnC;IACH;;IAEDrE,EAAAA,KAAK,GAAG;IACJ,SAAKqB,UAAL,GAAkB,EAAlB;IACH;;IAEDtd,EAAAA,IAAI,CAAC8D,MAAD,EAASkX,EAAT,EAAa;IACb;IACA,QAAI,KAAKkE,MAAT,EAAiB;IACb;IACH;;IAED,SAAKvf,QAAL,GAAgB,IAAhB;IAEA,SAAK2d,UAAL,CAAgB9T,IAAhB,CAAqB;IACjB1F,MAAAA,MADiB;IAEjBkX,MAAAA;IAFiB,KAArB;;IAKA,QAAI,KAAKsC,UAAL,CAAgBnS,MAAhB,GAAyB,EAA7B,EAAiC;IAC7B,WAAKxB,MAAL,CAAY7K,KAAZ,CAAkB4J,IAAlB,CAAuB,cAAvB,EAAwC,wBAAuB,KAAK4U,UAAL,CAAgBnS,MAAO,EAAtF,EAD6B;;IAI7B,UAAI,KAAKmS,UAAL,CAAgBnS,MAAhB,GAAyB,EAA7B,EAAiC;IAC7B,aAAKmS,UAAL,CAAgBqC,KAAhB;IACH;IACJ,KApBY;;IAsBhB;;IAED9c,EAAAA,KAAK,GAAG;IACJ,SAAK4b,oBAAL,GAA4B;IACxBC,MAAAA,IAAI,EAAE;IADkB,KAA5B;IAGA,SAAK9b,OAAL,GAAe,KAAf;IACA,SAAKqZ,KAAL;IACH;;IAEDsE,EAAAA,MAAM,GAAG;IACL,SAAK3d,OAAL,GAAe,IAAf;IACH;;IAvSmD;;ICDzC,MAAM8d,KAAN,CAAY;IACvBtY,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMuT,MAAM,GAAGwD,KAAK,CAACvD,gBAAN,EAAf;IACA,WAAO,IAAID,MAAJ,CAAWvT,MAAX,CAAP;IACH;;IAEsB,SAAhBwT,gBAAgB,GAAG;IACtB,WAAOE,kBAAP;IACH;;IARsB;;ICCZ,MAAMsD,WAAN,SAA0B1M,OAA1B,CAAkC;IAC7C7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAK/G,OAAL,GAAe,KAAf;IAEA,SAAKge,eAAL,GAAuB,IAAIC,eAAJ,EAAvB,CALgB;;IAOhB,SAAKC,UAAL,GAAkBjS,eAAe,CAACkS,IAAI,IAAI;IACtCpX,MAAAA,MAAM,CAAC4I,IAAP,CAAY9P,MAAM,CAACf,IAAnB,EAAyB,CAACqf,IAAI,GAAG,IAAR,EAAcrQ,OAAd,CAAsB,CAAtB,CAAzB;IACH,KAFgC,CAAjC;IAGA/G,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,aAAjB,EAAgC,MAAhC;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,SAAKwc,KAAL;IACA,SAAKrO,GAAL;IACA,SAAKmO,UAAL,GAAkB,IAAlB;IACA,SAAKnX,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,aAAtB,EAAqC,SAArC;IACH;;IAED6d,EAAAA,WAAW,CAACzgB,GAAD,EAAM;IACb,UAAM;IAAC0gB,MAAAA;IAAD,QAAU,KAAKvX,MAArB;IACA,SAAKA,MAAL,CAAYwX,MAAZ,CAAmBzP,WAAnB,GAAiCtE,GAAG,EAApC;IACA/O,IAAAA,KAAK,CAACmC,GAAD,EAAM;IAAC4gB,MAAAA,MAAM,EAAE,KAAKR,eAAL,CAAqBQ;IAA9B,KAAN,CAAL,CAAkDtO,IAAlD,CAAwDuO,GAAD,IAAS;IAC5D,YAAMC,MAAM,GAAGD,GAAG,CAAChO,IAAJ,CAASkO,SAAT,EAAf;IACA,WAAKhP,IAAL,CAAU9P,MAAM,CAAC2B,aAAjB;;IACA,YAAMod,SAAS,GAAG,MAAM;IACpBF,QAAAA,MAAM,CAACG,IAAP,GAAc3O,IAAd,CAAmB,QAAmB;IAAA,cAAlB;IAAC4O,YAAAA,IAAD;IAAOtT,YAAAA;IAAP,WAAkB;;IAC9B,cAAIsT,IAAJ,EAAU;IACNR,YAAAA,KAAK,CAAC3e,KAAN;IACH,WAFD,MAEO;IACH,iBAAKue,UAAL,IAAmB,KAAKA,UAAL,CAAgB1S,KAAK,CAACuT,UAAtB,CAAnB;IACAT,YAAAA,KAAK,CAACU,QAAN,CAAexT,KAAf;IACAoT,YAAAA,SAAS;IACZ;IACJ,SARL,EASEzO,KATF,CASSvH,CAAD,IAAO;IACX0V,UAAAA,KAAK,CAAC3e,KAAN,GADW;;IAGX,eAAKgQ,IAAL,CAAUrN,YAAY,CAACE,UAAvB,EAAmCoG,CAAnC;IACA,eAAK7B,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACY,KAAxB,EAA+B6B,YAAY,CAACE,UAA5C;IACA,eAAK4b,KAAL;IACH,SAfD;IAgBH,OAjBD;;IAkBAQ,MAAAA,SAAS;IACZ,KAtBD,EAsBGzO,KAtBH,CAsBUvH,CAAD,IAAO;IACZ,WAAKwV,KAAL;IACA,WAAKzO,IAAL,CAAUrN,YAAY,CAACE,UAAvB,EAAmCoG,CAAnC;IACA,WAAK7B,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACY,KAAxB,EAA+B6B,YAAY,CAACE,UAA5C;IACH,KA1BD;IA2BH;;IAED4b,EAAAA,KAAK,GAAG;IACJ,QAAI,KAAKJ,eAAT,EAA0B;IACtB,WAAKA,eAAL,CAAqBI,KAArB;IACA,WAAKJ,eAAL,GAAuB,IAAvB;IACH;IACJ;;IA1D4C;;ICAlC,MAAMiB,eAAN,SAA8B5N,OAA9B,CAAsC;IACjD7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAKmY,MAAL,GAAc,IAAd;IACA,SAAKC,YAAL,GAAoBtc,gBAAgB,CAACC,UAArC;IACA,SAAKsc,KAAL,GAAa,IAAb,CALgB;;IAOhB,SAAKlB,UAAL,GAAkBjS,eAAe,CAACkS,IAAI,IAAI;IACtCpX,MAAAA,MAAM,CAAC4I,IAAP,CAAY9P,MAAM,CAACf,IAAnB,EAAyB,CAACqf,IAAI,GAAG,IAAR,EAAcrQ,OAAd,CAAsB,CAAtB,CAAzB;IACH,KAFgC,CAAjC;IAGH;;IAEDlM,EAAAA,OAAO,GAAG;IACN,QAAI,KAAKsd,MAAT,EAAiB;IACb,WAAKA,MAAL,CAAYvf,KAAZ;IACA,WAAKuf,MAAL,GAAc,IAAd;IACH;;IACD,SAAKC,YAAL,GAAoBtc,gBAAgB,CAACC,UAArC;IACA,SAAKob,UAAL,GAAkB,IAAlB;IACA,SAAKkB,KAAL,GAAa,IAAb;IACA,SAAKrP,GAAL;IACA,SAAKhJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,iBAAtB,EAAyC,SAAzC;IACH;;IAED6e,EAAAA,gBAAgB,GAAG;IACf,UAAMtY,MAAM,GAAG,KAAKA,MAApB;IACA,UAAM;IACF7K,MAAAA,KADE;IAEF4T,MAAAA,MAAM,EAAE;IAAC7J,QAAAA;IAAD,OAFN;IAGFqY,MAAAA;IAHE,QAIFvX,MAJJ;IAMA,SAAKmY,MAAL,GAAc,IAAII,SAAJ,CAAc,KAAKF,KAAnB,CAAd;IACA,SAAKF,MAAL,CAAYK,UAAZ,GAAyB,aAAzB;IACAtZ,IAAAA,KAAK,CAAC,KAAKiZ,MAAN,EAAc,MAAd,EAAsB,MAAM;IAC7B,WAAKvP,IAAL,CAAU9P,MAAM,CAAC2B,aAAjB;IACAtF,MAAAA,KAAK,CAACsE,GAAN,CAAU,iBAAV,EAA6B,aAA7B;IACA,WAAK2e,YAAL,GAAoBtc,gBAAgB,CAACE,IAArC;IACH,KAJI,CAAL;IAMAkD,IAAAA,KAAK,CAAC,KAAKiZ,MAAN,EAAc,SAAd,EAAyBpY,KAAK,IAAI;IACnC,WAAKoX,UAAL,IAAmB,KAAKA,UAAL,CAAgBpX,KAAK,CAACiL,IAAN,CAAWgN,UAA3B,CAAnB;;IACA,WAAKS,cAAL,CAAoB1Y,KAAK,CAACiL,IAA1B;IACH,KAHI,CAAL;IAMA9L,IAAAA,KAAK,CAAC,KAAKiZ,MAAN,EAAc,OAAd,EAAuB,MAAM;IAC9BhjB,MAAAA,KAAK,CAACsE,GAAN,CAAU,iBAAV,EAA6B,cAA7B;IACA,WAAKmP,IAAL,CAAU9P,MAAM,CAAC0B,SAAjB;IACA,WAAK4d,YAAL,GAAoBtc,gBAAgB,CAAClD,KAArC;IACH,KAJI,CAAL;IAMAsG,IAAAA,KAAK,CAAC,KAAKiZ,MAAN,EAAc,OAAd,EAAuBze,KAAK,IAAI;IACjCvE,MAAAA,KAAK,CAACsE,GAAN,CAAU,iBAAV,EAA6B,cAA7B;IACA,WAAKmP,IAAL,CAAUrN,YAAY,CAACG,cAAvB,EAAuChC,KAAvC;IACA,WAAKsG,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACY,KAAxB,EAA+B6B,YAAY,CAACG,cAA5C;IACA,WAAK0c,YAAL,GAAoBtc,gBAAgB,CAACpC,KAArC;IACA6d,MAAAA,KAAK,CAAC3e,KAAN;IACAzD,MAAAA,KAAK,CAACsE,GAAN,CAAU,iBAAV,EAA8B,eAA9B,EAA8CC,KAA9C;IACH,KAPI,CAAL;IAQH,GA7DgD;;;IAgEjD+e,EAAAA,cAAc,CAACC,OAAD,EAAU;IACpB,UAAM;IAACnB,MAAAA;IAAD,QAAU,KAAKvX,MAArB;;IACA,QAAI,CAACuX,KAAL,EAAY;IACR,WAAKvX,MAAL,CAAY7K,KAAZ,CAAkB4J,IAAlB,CAAuB,iBAAvB,EAA0C,wCAA1C;IACA;IACH;;IACDwY,IAAAA,KAAK,CAACU,QAAN,CAAeS,OAAf;IACH;;IAGDpB,EAAAA,WAAW,CAACzgB,GAAD,EAAM;IACb,SAAKmJ,MAAL,CAAYwX,MAAZ,CAAmBzP,WAAnB,GAAiCtE,GAAG,EAApC;IACA,SAAK4U,KAAL,GAAaxhB,GAAb;;IACA,SAAKyhB,gBAAL;IACH;;IA9EgD;;ICAtC,MAAMK,MAAN,CAAa;IACxBla,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMuT,MAAM,GAAGoF,MAAM,CAACnF,gBAAP,CAAwBxT,MAAM,CAACpB,IAAP,CAAY3H,QAApC,CAAf;IACA,WAAO,IAAIsc,MAAJ,CAAWvT,MAAX,CAAP;IACH;;IAEsB,SAAhBwT,gBAAgB,CAACvc,QAAD,EAAW;IAC9B,QAAIA,QAAQ,KAAKzC,oBAAoB,CAACE,KAAtC,EAA6C;IACzC,aAAOsiB,WAAP;IACH,KAFD,MAEO,IAAI/f,QAAQ,KAAKzC,oBAAoB,CAACC,SAAtC,EAAiD;IACpD,aAAOyjB,eAAP;IACH;IACJ;;IAZuB;;;ACH5B;IACA;AACA;IACA;IACA;AACA;IACA;AACA;IACA;IACA;IACA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE;IACxC,IAAI,IAAI,CAAC,WAAW,EAAE;IACtB,QAAQ,MAAM,8BAA8B,CAAC;IAC7C,KAAK;AACL;IACA,IAAI,MAAM,GAAG,MAAM,IAAI;IACvB,QAAQ,IAAI,EAAE,OAAO;IACrB,KAAK,CAAC;AACN;IACA,IAAI,MAAM,GAAG,IAAI,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC7D;IACA;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;IACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;IACvB;IACA;IACA,YAAY,MAAM,GAAG,IAAI,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IACzE,SAAS;AACT;IACA,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAC9C,YAAY,aAAa,CAAC,MAAM,EAAE,CAAC;AACnC;IACA,YAAY,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClC;IACA,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;IACxC,gBAAgB,uBAAuB,EAAE,CAAC;IAC1C,aAAa;IACb,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS;AACT;IACA,QAAQ,YAAY,CAAC,WAAW;IAChC,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;IACxC,gBAAgB,uBAAuB,EAAE,CAAC;IAC1C,aAAa;IACb,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA,IAAI,SAAS,YAAY,CAAC,YAAY,EAAE;IACxC,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,MAAM,CAAC,YAAY,GAAG,WAAW;IAC7C,gBAAgB,YAAY,EAAE,CAAC;IAC/B,gBAAgB,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1D,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,IAAI,QAAQ,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAChE;IACA,QAAQ,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,aAAa,CAAC,MAAM,EAAE,CAAC;AAC/B;IACA,QAAQ,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC9B;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtH,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,aAAa,CAAC,QAAQ,EAAE;IACrC,QAAQ,QAAQ,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC7C;IACA,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,UAAU,EAAE,CAAC;IACzB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;IACrC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC;IACA,YAAY,UAAU,CAAC,WAAW;IAClC,gBAAgB,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,CAAC;IAClB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IAC/D,YAAY,OAAO,CAAC,IAAI,CAAC,oEAAoE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3G,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IACzE,SAAS;AACT;IACA,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;IACnC,YAAY,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,SAAS,MAAM;IACf,YAAY,aAAa,CAAC,IAAI,EAAE,CAAC;IACjC,YAAY,SAAS,EAAE,CAAC;IACxB,SAAS;AACT;IACA,QAAQ,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5B;IACA,QAAQ,SAAS,SAAS,CAAC,MAAM,EAAE;IACnC,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;IACzD,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,iBAAiB,MAAM;IACvB,oBAAoB,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjC,iBAAiB;IACjB,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;IAC7D,gBAAgB,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;IAC9D,oBAAoB,OAAO;IAC3B,iBAAiB;AACjB;IACA,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/C,aAAa,CAAC,CAAC;AACf;IACA,YAAY,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAC1C;IACA,YAAY,IAAI,CAAC,IAAI,EAAE;IACvB,gBAAgB,IAAI,MAAM,EAAE;IAC5B,oBAAoB,aAAa,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACvD,iBAAiB,MAAM;IACvB,oBAAoB,MAAM,mBAAmB,CAAC;IAC9C,iBAAiB;IACjB,aAAa;AACb;IACA,YAAY,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IAC7C,gBAAgB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,aAAa;AACb;IACA,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,IAAI,GAAG,CAAC;AACxB;IACA,gBAAgB,IAAI;IACpB,oBAAoB,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE;AAC9B;IACA,gBAAgB,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;IACzD,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7C,iBAAiB,MAAM;IACvB,oBAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,iBAAiB;IACjB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;IACzC,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,UAAU,CAAC,SAAS,OAAO,EAAE;IACzC,gBAAgB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnC,gBAAgB,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC;IAC1D,gBAAgB,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,aAAa,CAAC,CAAC;IACf,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,cAAc,GAAG;IAC9B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,UAAU,EAAE,CAAC;IACzB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;IACxC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7F,aAAa;IACb,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3B;IACA,QAAQ,aAAa,CAAC,KAAK,EAAE,CAAC;AAC9B;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC7C,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,eAAe,GAAG;IAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,UAAU,EAAE,CAAC;IACzB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;IACrC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9F,aAAa;IACb,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC9B;IACA;IACA,QAAQ,aAAa,CAAC,MAAM,EAAE,CAAC;AAC/B;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC9C,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;IAC7B,QAAQ,WAAW,CAAC,IAAI,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,KAAK;AACL;IACA,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE;IAClD,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,YAAY,MAAM,2CAA2C,CAAC;IAC9D,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,GAAG,cAAc,GAAG,cAAc,CAAC,IAAI,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC;AACrF;IACA,QAAQ,IAAI,CAAC,IAAI,EAAE;IACnB,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzE,aAAa;AACb;IACA,YAAY,UAAU,CAAC,WAAW;IAClC,gBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrD,aAAa,EAAE,IAAI,CAAC,CAAC;IACrB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;IACzE,YAAY,IAAI,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACzD;IACA,YAAY,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IAClD,gBAAgB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,aAAa,CAAC;AACd;IACA,YAAY,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,MAAM;IACf,YAAY,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC1C,YAAY,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,YAAY,MAAM,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;IAC5C,gBAAgB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,SAAS,kBAAkB,CAAC,SAAS,EAAE;IAC/C,YAAY,IAAI;IAChB,gBAAgB,IAAI,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC7E,oBAAoB,oCAAoC,GAAG,SAAS,CAAC,IAAI,GAAG,cAAc;IAC1F,iBAAiB,EAAE;IACnB,oBAAoB,IAAI,EAAE,wBAAwB;IAClD,iBAAiB,CAAC,CAAC,CAAC;AACpB;IACA,gBAAgB,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,gBAAgB,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,gBAAgB,OAAO,MAAM,CAAC;IAC9B,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE;IAC1B,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,uBAAuB,CAAC,OAAO,EAAE;IAC9C,QAAQ,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC;AAC/B;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;IACrC,YAAY,UAAU,CAAC,WAAW;IAClC,gBAAgB,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjD,aAAa,EAAE,IAAI,CAAC,CAAC;IACrB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;IACtC,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE;IAC/C,YAAY,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnD,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,OAAO,IAAI,IAAI,CAAC;AACxB;IACA,QAAQ,UAAU,CAAC,WAAW;IAC9B,YAAY,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC7C,SAAS,EAAE,IAAI,CAAC,CAAC;IACjB,KAAK;AACL;IACA,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;IAC7B,QAAQ,IAAI,CAAC,IAAI,EAAE;IACnB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B;IACA,QAAQ,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,UAAU,EAAE;IAC5D,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,SAAS,MAAM;IACf,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,OAAO,GAAG,6EAA6E,GAAG,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;AAC7H;IACA,IAAI,SAAS,UAAU,GAAG;IAC1B,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE;IACzC,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK;AACL;IACA,IAAI,IAAI,aAAa,CAAC;AACtB;IACA,IAAI,IAAI,YAAY,GAAG;IACvB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,cAAc,EAAE,cAAc;AACtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,aAAa,EAAE,aAAa;AACpC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,cAAc,EAAE,cAAc;AACtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,eAAe,EAAE,eAAe;AACxC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,YAAY,EAAE,YAAY;AAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,oBAAoB,EAAE,SAAS,iBAAiB,EAAE,QAAQ,EAAE;IACpE,YAAY,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;IAC1D,gBAAgB,MAAM,gCAAgC,CAAC;IACvD,aAAa;AACb;IACA,YAAY,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;IACvD,gBAAgB,MAAM,qCAAqC,CAAC;IAC5D,aAAa;AACb;IACA,YAAY,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IACvD,YAAY,IAAI,CAAC,kBAAkB,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAChE;IACA,YAAY,OAAO;IACnB,gBAAgB,kBAAkB,EAAE,SAAS,QAAQ,EAAE;IACvD,oBAAoB,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;IACvD,iBAAiB;IACjB,aAAa,CAAC;IACd,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,iBAAiB,EAAE,WAAW;IACtC,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,UAAU,EAAE,CAAC;IAC7B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,aAAa,CAAC,iBAAiB,EAAE,CAAC;AAC9C;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1D,aAAa;IACb,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,OAAO,EAAE,WAAW;IAC5B,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,UAAU,EAAE,CAAC;IAC7B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,OAAO,aAAa,CAAC,IAAI,CAAC;IACtC,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,UAAU,EAAE,UAAU;AAC9B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,KAAK,EAAE,WAAW;IAC1B,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,UAAU,EAAE,CAAC;IAC7B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,OAAO,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3D,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,mBAAmB,EAAE,WAAW;IACxC,YAAY,OAAO,aAAa,CAAC;IACjC,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,EAAE,SAAS,QAAQ,EAAE;IACjC,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,UAAU,EAAE,CAAC;IAC7B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,WAAW,EAAE,SAAS,QAAQ,EAAE;IACxC,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,UAAU,EAAE,CAAC;IAC7B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,qBAAqB,EAAE,SAAS,iBAAiB,EAAE;IAC3D,YAAY,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;AACtC;IACA,YAAY,IAAI,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAClD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IAC7C,gBAAgB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1C,oBAAoB,QAAQ,EAAE,CAAC;IAC/B,oBAAoB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC/C,iBAAiB,CAAC,CAAC;IACnB,aAAa;IACb,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,EAAE,IAAI;AAClB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,UAAU,EAAE,CAAC;AACrB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,UAAU,EAAE,CAAC;AACrB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,MAAM,EAAE,IAAI;AACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,KAAK,EAAE,WAAW;IAC1B,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACnE,gBAAgB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACzD,aAAa;AACb;IACA,YAAY,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,iBAAiB,KAAK,UAAU,EAAE;IACxF,gBAAgB,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAClD,aAAa;IACb,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,YAAY,QAAQ,CAAC,UAAU,CAAC,CAAC;IACjC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAC7B,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,cAAc,EAAE,SAAS,KAAK,EAAE;IACxC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC9D,aAAa;IACb,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,KAAK,EAAE,UAAU;AACzB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,QAAQ,EAAE,WAAW;IAC7B,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC;IAC9B,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,OAAO,EAAE,WAAW;IAC5B,YAAY,IAAI,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC;AACtD;IACA,YAAY,MAAM,GAAG;IACrB,gBAAgB,WAAW,EAAE,IAAI;IACjC,aAAa,CAAC;IACd,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;IACzB,YAAY,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,YAAY,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;AACvC;IACA,YAAY,IAAI,OAAO,CAAC,uBAAuB,EAAE;IACjD,gBAAgB,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IACxD,gBAAgB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACvD,aAAa;AACb;IACA,YAAY,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAClD;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvD,aAAa;IACb,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,OAAO,EAAE,OAAO;IACxB,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,QAAQ,IAAI,GAAG,YAAY,CAAC;IAC5B,QAAQ,OAAO,YAAY,CAAC;IAC5B,KAAK;AACL;IACA;IACA,IAAI,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE;IACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK;AACL;IACA,IAAI,IAAI,GAAG,IAAI,CAAC;AAChB;IACA,IAAI,OAAO,YAAY,CAAC;IACxB,CAAC;AACD;IACA,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5B;IAC6D;IAC7D,IAAI,cAAc,GAAG,SAAS,CAAC;IAC/B,CAAC;AAOD;IACA,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE;IACjD,IAAI,IAAI,CAAC,QAAQ,EAAE;IACnB,QAAQ,MAAM,wBAAwB,CAAC;IACvC,KAAK;AACL;IACA,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,KAAK,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC;IACpG,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE;IAC/C,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,QAAQ,EAAE;IACnE,YAAY,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,QAAQ,EAAE;IACxC,YAAY,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,SAAS;IACT,KAAK,CAAC,CAAC;IACP,CAAC,CAAC;AACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,CAAC,WAAW,GAAG,SAAS,OAAO,EAAE;IAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC5B,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE;IACvD,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IACxD,YAAY,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IAC5D,gBAAgB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,UAAU,EAAE;IAC5D,oBAAoB,WAAW,CAAC,KAAK,CAAC;IACtC,wBAAwB,SAAS,EAAE,YAAY;IAC/C,wBAAwB,SAAS,EAAE,YAAY;IAC/C,wBAAwB,OAAO,EAAE,UAAU;IAC3C,qBAAqB,CAAC,CAAC;IACvB,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;IAC/C,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IACxD,YAAY,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IAC5D,gBAAgB,WAAW,CAAC,KAAK,CAAC;IAClC,oBAAoB,SAAS,EAAE,YAAY;IAC3C,oBAAoB,SAAS,EAAE,YAAY;IAC3C,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE;IAC7C,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IACxD,YAAY,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,UAAU,EAAE;IACxD,gBAAgB,WAAW,CAAC,KAAK,CAAC;IAClC,oBAAoB,SAAS,EAAE,YAAY;IAC3C,oBAAoB,OAAO,EAAE,UAAU;IACvC,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE;IAC7C,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IACxD,YAAY,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,UAAU,EAAE;IACxD,gBAAgB,WAAW,CAAC,KAAK,CAAC;IAClC,oBAAoB,SAAS,EAAE,YAAY;IAC3C,oBAAoB,OAAO,EAAE,UAAU;IACvC,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE;IAC9B,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IACxD,YAAY,WAAW,CAAC,KAAK,CAAC;IAC9B,gBAAgB,SAAS,EAAE,YAAY;IACvC,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE;IAC9B,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE;IACxD,YAAY,WAAW,CAAC,KAAK,CAAC;IAC9B,gBAAgB,SAAS,EAAE,YAAY;IACvC,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE;IAC5B,QAAQ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,UAAU,EAAE;IACpD,YAAY,WAAW,CAAC,KAAK,CAAC;IAC9B,gBAAgB,OAAO,EAAE,UAAU;IACnC,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK;IACL,CAAC,CAAC;AACF;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE;IACrD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IAC9C,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;IAC9C,YAAY,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAClC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IACpD,YAAY,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAClC,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IAC7C,QAAQ,IAAI,MAAM,CAAC,YAAY,KAAK,cAAc,IAAI,MAAM,CAAC,YAAY,KAAK,cAAc,KAAK,OAAO,mBAAmB,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,KAAK,mBAAmB,CAAC,EAAE;IAC7L,YAAY,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAClC,SAAS,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,WAAW,EAAE;IACxD,YAAY,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IAChC,SAAS,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,mBAAmB,EAAE;IAChE,YAAY,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAClC,SAAS,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,mBAAmB,EAAE;IAChE,YAAY,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAClG,gBAAgB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtC,aAAa,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC1G,gBAAgB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtC,aAAa,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC1G,gBAAgB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtC,aAAa,MAAM,CAEN;IACb,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,OAAO,mBAAmB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,EAAE;IACxI,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC9B,YAAY,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;IAC3C,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IAC1B,YAAY,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAE1B;IACT,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;IAC7B,YAAY,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,SAAS;IACT,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IAC1B,YAAY,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAClC,SAAS;IACT,KAAK;AACL;IACA,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;IAC9C,IAAI,IAAI,QAAQ,CAAC;AACjB;IACA;IACA;IACA,IAAI,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE;IACvC;IACA;IACA,QAAQ,QAAQ,GAAG,mBAAmB,CAAC;IACvC,KAAK;AACL;IACA,IAAI,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;IACvG,QAAQ,QAAQ,GAAG,mBAAmB,CAAC;IACvC,KAAK;AACL;IACA;IACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE;IAC1D,QAAQ,QAAQ,GAAG,cAAc,CAAC;AAClC;IACA,QAAQ,IAAI,OAAO,mBAAmB,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;IACjG,YAAY,QAAQ,GAAG,mBAAmB,CAAC;IAC3C,SAAS;IACT,KAAK;AACL;IACA;IACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;IAC/B,QAAQ,QAAQ,GAAG,WAAW,CAAC;IAC/B,KAAK;AACL;IACA;IACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;IAClC,QAAQ,QAAQ,GAAG,cAAc,CAAC;IAClC,KAAK;AACL;IACA,IAAI,IAAI,yBAAyB,EAAE,IAAI,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,EAAE;IACpL,QAAQ,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC9F;IACA,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;IACzC,gBAAgB,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,IAAI,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;IACxH,oBAAoB,QAAQ,GAAG,mBAAmB,CAAC;IACnD,iBAAiB;IACjB;IACA,aAAa,MAAM;IACnB;IACA,gBAAgB,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,IAAI,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;IACxH,oBAAoB,QAAQ,GAAG,mBAAmB,CAAC;IACnD,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,WAAW,YAAY,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE;IAC5D,QAAQ,QAAQ,GAAG,mBAAmB,CAAC;IACvC,KAAK;AACL;IACA,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE;IAC7B,QAAQ,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;IACvC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;IAC9D,QAAQ,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvF,KAAK;AACL;IACA,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;IAC/B,QAAQ,QAAQ,GAAG,mBAAmB,CAAC;IACvC,KAAK;AACL;IACA,IAAI,OAAO,QAAQ,CAAC;IACpB,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,UAAU,CAAC,WAAW,EAAE;AACjC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,YAAY,EAAE;IAC5C,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,WAAW,GAAG,YAAY,CAAC;IACvC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,SAAS,GAAG;IACrB,QAAQ,KAAK,EAAE,IAAI;IACnB,QAAQ,KAAK,EAAE,IAAI;IACnB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW;IACrC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACvC,QAAQ,IAAI,YAAY,CAAC;IACzB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI;IACxC,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,GAAG,EAAE,IAAI;IACrB,SAAS,CAAC;AACV;IACA,QAAQ,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,IAAI,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC7H,YAAY,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACpC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,IAAI,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC7H,YAAY,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACpC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU,IAAI,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC3H,YAAY,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC;IAClC,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;IACpE,YAAY,MAAM,qDAAqD,CAAC;IACxE,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;IAC/B,YAAY,YAAY,GAAG,IAAI,CAAC;IAChC,YAAY,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE;IACvD,gBAAgB,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;IAC/C,aAAa;AACb;IACA,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE;IAC5D,gBAAgB,IAAI,EAAE,OAAO;IAC7B,gBAAgB,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3C,gBAAgB,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3C,gBAAgB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC;IACtE,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7C,gBAAgB,YAAY,EAAE,YAAY;IAC1C,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,KAAK;IACxC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;IACzC,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7C,aAAa,CAAC,CAAC;AACf;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IAClC,gBAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IACpD,aAAa;IACb,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;IAC/B,YAAY,YAAY,GAAG,IAAI,CAAC;IAChC,YAAY,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE;IACvD,gBAAgB,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;IAC/C,aAAa;AACb;IACA,YAAY,IAAI,SAAS,GAAG,WAAW,CAAC;AACxC;IACA,YAAY,IAAI,yBAAyB,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE;IAC3G,gBAAgB,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE;IACA,gBAAgB,IAAI,SAAS,EAAE;IAC/B,oBAAoB,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;IAClD,oBAAoB,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD;IACA,oBAAoB,IAAI,YAAY,IAAI,YAAY,KAAK,cAAc,EAAE;IACzE;IACA;IACA,wBAAwB,YAAY,GAAG,mBAAmB,CAAC;IAC3D,qBAAqB;IACrB,iBAAiB,MAAM;IACvB,oBAAoB,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;IAClD,oBAAoB,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnD,iBAAiB;IACjB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE;IAC1D,gBAAgB,IAAI,EAAE,OAAO;IAC7B,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjC,gBAAgB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnC,gBAAgB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;IACvD,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7C,gBAAgB,YAAY,EAAE,YAAY;IAC1C,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,KAAK;IACxC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;IACzC,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7C,gBAAgB,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3C,gBAAgB,eAAe,EAAE,IAAI,CAAC,eAAe;IACrD,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;IACzC,gBAAgB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrC,aAAa,CAAC,CAAC;AACf;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IAClC,gBAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IACpD,aAAa;IACb,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;IACpD,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC;AAC5B;IACA,YAAY,IAAI,gBAAgB,GAAG,yBAAyB,EAAE,KAAK,IAAI,CAAC;AACxE;IACA,YAAY,IAAI,SAAS,CAAC,KAAK,YAAY,mBAAmB,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;IACrF,gBAAgB,gBAAgB,GAAG,KAAK,CAAC;IACzC,aAAa,MAAM,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;IACpH,gBAAgB,gBAAgB,GAAG,KAAK,CAAC;IACzC,aAAa;AACb;IACA,YAAY,IAAI,gBAAgB,KAAK,IAAI,EAAE;IAC3C,gBAAgB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC1C,gBAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IACpD,aAAa,MAAM;IACnB,gBAAgB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW;IAC3D,oBAAoB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW;IAC/D;IACA,wBAAwB,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC5D,wBAAwB,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC5D,qBAAqB,CAAC,CAAC;IACvB,iBAAiB,CAAC,CAAC;IACnB,aAAa;IACb,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;IAC7B,YAAY,YAAY,GAAG,IAAI,CAAC;IAChC,YAAY,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU,EAAE;IACrD,gBAAgB,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC;IAC7C,aAAa;IACb,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE;IAC1D,gBAAgB,IAAI,EAAE,KAAK;IAC3B,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG;IAChD,gBAAgB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;IAC3C,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7C,gBAAgB,YAAY,EAAE,YAAY;IAC1C,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,GAAG;IACtC,aAAa,CAAC,CAAC;IACf,YAAY,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;IAC9C,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;IAC5C,QAAQ,QAAQ,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC7C;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,OAAO,EAAE;IAC/D,gBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,CAAC;IACf,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,OAAO,EAAE;IAC/D,gBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,CAAC;IACf,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,OAAO,EAAE;IAC7D,gBAAgB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,aAAa,CAAC,CAAC;IACf,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW;IACrC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAChD,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAChD,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;IAC9C,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,eAAe,GAAG,WAAW;IACtC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;IACjD,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;IACjD,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAC/C,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,QAAQ,EAAE;IACtC,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACxD,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACxD,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACpD,SAAS;AACT;IACA,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS;AACT;IACA,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACzC,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IACtC,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IAChC,YAAY,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACzC,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IACtC,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;IAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACvC,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACpC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,QAAQ,EAAE;IACzC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;IACpC,YAAY,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;IAC1C,gBAAgB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE;IAC/D,oBAAoB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE;IACnE,wBAAwB,QAAQ,CAAC;IACjC,4BAA4B,KAAK,EAAE,aAAa;IAChD,4BAA4B,KAAK,EAAE,aAAa;IAChD,yBAAyB,CAAC,CAAC;IAC3B,qBAAqB,CAAC,CAAC;IACvB,iBAAiB,CAAC,CAAC;IACnB,aAAa,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;IACnC,gBAAgB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE;IAC/D,oBAAoB,QAAQ,CAAC;IAC7B,wBAAwB,KAAK,EAAE,aAAa;IAC5C,qBAAqB,CAAC,CAAC;IACvB,iBAAiB,CAAC,CAAC;IACnB,aAAa,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;IACnC,gBAAgB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE;IAC/D,oBAAoB,QAAQ,CAAC;IAC7B,wBAAwB,KAAK,EAAE,aAAa;IAC5C,qBAAqB,CAAC,CAAC;IACvB,iBAAiB,CAAC,CAAC;IACnB,aAAa;IACb,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,SAAS,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE;IAC9C,YAAY,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IAC/C,gBAAgB,IAAI,SAAS,GAAG,kBAAkB,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;IAC5E,oBAAoB,WAAW,CAAC,IAAI,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,iBAAiB,CAAC,CAAC;AACnB;IACA,gBAAgB,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IACtD,oBAAoB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,iBAAiB,CAAC;AAClB;IACA,gBAAgB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,MAAM;IACnB,gBAAgB,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC9C,gBAAgB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,gBAAgB,MAAM,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;IAChD,oBAAoB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,iBAAiB,CAAC;IAClB,aAAa;IACb,SAAS;AACT;IACA,QAAQ,SAAS,kBAAkB,CAAC,SAAS,EAAE;IAC/C,YAAY,IAAI,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;IACzE,gBAAgB,oCAAoC,GAAG,SAAS,CAAC,IAAI,GAAG,cAAc;IACtF,aAAa,EAAE;IACf,gBAAgB,IAAI,EAAE,wBAAwB;IAC9C,aAAa,CAAC,CAAC,CAAC;AAChB;IACA,YAAY,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,YAAY,IAAI,GAAG,CAAC;IACpB,YAAY,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;IAC5C,gBAAgB,GAAG,GAAG,GAAG,CAAC;IAC1B,aAAa,MAAM,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACzD,gBAAgB,GAAG,GAAG,SAAS,CAAC;IAChC,aAAa,MAAM;IACnB,gBAAgB,MAAM,qCAAqC,CAAC;IAC5D,aAAa;IACb,YAAY,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,YAAY,OAAO,MAAM,CAAC;IAC1B,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW;IAClC,QAAQ,SAAS,CAAC,WAAW,CAAC;IAC9B,YAAY,KAAK,EAAE,IAAI,CAAC,aAAa;IACrC,YAAY,KAAK,EAAE,IAAI,CAAC,aAAa;IACrC,YAAY,GAAG,EAAE,IAAI,CAAC,WAAW;IACjC,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;IAC/B,QAAQ,IAAI,GAAG,IAAI,IAAI;IACvB,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,GAAG,EAAE,IAAI;IACrB,SAAS,CAAC;AACV;IACA,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;IAChD,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACtF,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;IAChD,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACtF,SAAS;IACT,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;IAC5C,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAChF,SAAS;IACT,KAAK,CAAC;IACN,CAAC;AACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;IACtC,CAAC;AACD;IACA,IAAI,oBAAoB,GAAG,qFAAqF,CAAC;AACjH;IACA,CAAC,SAAS,IAAI,EAAE;IAChB,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,QAAQ,OAAO;IACf,KAAK;AACL;IACA,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,OAAO;IACf,KAAK;AACL;IACA,IAAI,IAAI,OAAOU,cAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,OAAO;IACf,KAAK;AACL;IACA,IAAIA,cAAM,CAAC,SAAS,GAAG;IACvB,QAAQ,SAAS,EAAE,oBAAoB;IACvC,QAAQ,YAAY,EAAE,WAAW,EAAE;IACnC,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAACA,cAAM,CAAC,OAAO,EAAE;IACzB,QAAQA,cAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IAC5B,KAAK;AACL;IACA,IAAI,IAAI,OAAOA,cAAM,CAAC,OAAO,CAAC,GAAG,KAAK,WAAW,IAAI,OAAOA,cAAM,CAAC,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE;IAClG,QAAQA,cAAM,CAAC,OAAO,CAAC,KAAK,GAAGA,cAAM,CAAC,OAAO,CAAC,GAAG,GAAGA,cAAM,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW;IACrF,YAAY,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,SAAS,CAAC;IACV,KAAK;AACL;IACA,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACzC;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG;IACxB,YAAY,eAAe,EAAE;IAC7B,gBAAgB,WAAW,EAAE,WAAW;IACxC,oBAAoB,OAAO,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa;IACb,SAAS,CAAC;AACV;IACA,QAAQ,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,gBAAgB,GAAG,WAAW;IACjG,YAAY,IAAI,GAAG,GAAG;IACtB,gBAAgB,UAAU,EAAE,WAAW;IACvC,oBAAoB,OAAO,GAAG,CAAC;IAC/B,iBAAiB;IACjB,gBAAgB,IAAI,EAAE,WAAW,EAAE;IACnC,gBAAgB,KAAK,EAAE,WAAW,EAAE;IACpC,gBAAgB,SAAS,EAAE,WAAW,EAAE;IACxC,gBAAgB,SAAS,EAAE,WAAW;IACtC,oBAAoB,OAAO,EAAE,CAAC;IAC9B,iBAAiB;IACjB,gBAAgB,KAAK,EAAE,EAAE;IACzB,aAAa,CAAC;IACd,YAAY,OAAO,GAAG,CAAC;IACvB,SAAS,CAAC;AACV;IACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,WAAW,EAAE,CAAC;IAC9C,KAAK;AACL;IACA,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACzC;IACA,QAAQ,IAAI,CAAC,QAAQ,GAAG;IACxB,YAAY,QAAQ,EAAE,OAAO;IAC7B,YAAY,IAAI,EAAE,EAAE;IACpB,YAAY,IAAI,EAAE,EAAE;IACpB,SAAS,CAAC;IACV,KAAK;AACL;IACA,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG;IACtB,YAAY,KAAK,EAAE,CAAC;IACpB,YAAY,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC;IACV,KAAK;AACL;IACA,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;IACpC;IACA,QAAQ,IAAI,CAAC,GAAG,GAAG;IACnB,YAAY,eAAe,EAAE,WAAW;IACxC,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa;IACb,YAAY,eAAe,EAAE,WAAW;IACxC,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC;IACV,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAGA,cAAM,CAAC;IACzB,CAAC,EAAE,OAAOA,cAAM,KAAK,WAAW,GAAGA,cAAM,GAAG,IAAI,CAAC,CAAC;AAClD;IACA;IACA;AACA;IACA;AACA;IACA;IACA,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzD,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;IAClD,IAAI,IAAI,OAAO,2BAA2B,KAAK,WAAW,EAAE;IAC5D;IACA,QAAQ,qBAAqB,GAAG,2BAA2B,CAAC;IAC5D,KAAK,MAAM,IAAI,OAAO,wBAAwB,KAAK,WAAW,EAAE;IAChE;IACA,QAAQ,qBAAqB,GAAG,wBAAwB,CAAC;IACzD,KAAK,MAAM,IAAI,OAAO,uBAAuB,KAAK,WAAW,EAAE;IAC/D;IACA,QAAQ,qBAAqB,GAAG,uBAAuB,CAAC;IACxD,KAAK,MAAM,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;IAC7D;IACA,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;AACzB;IACA;IACA,QAAQ,qBAAqB,GAAG,SAAS,QAAQ,EAAE,OAAO,EAAE;IAC5D,YAAY,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChD,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;IACrE,YAAY,IAAI,EAAE,GAAG,UAAU,CAAC,WAAW;IAC3C,gBAAgB,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IAChD,aAAa,EAAE,UAAU,CAAC,CAAC;IAC3B,YAAY,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC7C,YAAY,OAAO,EAAE,CAAC;IACtB,SAAS,CAAC;IACV,KAAK;IACL,CAAC;AACD;IACA;IACA,IAAI,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;IACvD,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;IACjD,IAAI,IAAI,OAAO,0BAA0B,KAAK,WAAW,EAAE;IAC3D;IACA,QAAQ,oBAAoB,GAAG,0BAA0B,CAAC;IAC1D,KAAK,MAAM,IAAI,OAAO,uBAAuB,KAAK,WAAW,EAAE;IAC/D;IACA,QAAQ,oBAAoB,GAAG,uBAAuB,CAAC;IACvD,KAAK,MAAM,IAAI,OAAO,sBAAsB,KAAK,WAAW,EAAE;IAC9D;IACA,QAAQ,oBAAoB,GAAG,sBAAsB,CAAC;IACtD,KAAK,MAAM,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;IAC5D;IACA,QAAQ,oBAAoB,GAAG,SAAS,EAAE,EAAE;IAC5C,YAAY,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7B,SAAS,CAAC;IACV,KAAK;IACL,CAAC;AACD;IACA;IACA,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACvC;IACA,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IACzC,IAAI,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE;IACnD;IACA,QAAQ,YAAY,GAAG,kBAAkB,CAAC;IAC1C,KAAK;AACL;IACA,IAAI,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE;IAChD;IACA,QAAQ,YAAY,GAAG,eAAe,CAAC;IACvC,KAAK;IACL,CAAC;AACD;IACA;IACA,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACrB;IACA,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpE;IACA,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,SAAS,CAAC,YAAY,KAAK,WAAW,EAAE;IACvF,IAAI,IAAI,OAAO,SAAS,CAAC,kBAAkB,KAAK,WAAW,EAAE;IAC7D,QAAQ,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,kBAAkB,CAAC;IAC9D,KAAK;AACL;IACA,IAAI,IAAI,OAAO,SAAS,CAAC,eAAe,KAAK,WAAW,EAAE;IAC1D,QAAQ,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC;IAC3D,KAAK;IACL,CAAC;AACD;IACA,IAAI,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACpH,IAAI,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxI,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC,kBAAkB,KAAK,UAAU,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACtJ;IACA,IAAI,QAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC1E;IACA,IAAI,QAAQ,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;IAC1E,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,CAAC;AACD;IACA,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC;IACA,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;IACpF,IAAI,WAAW,GAAG,iBAAiB,CAAC;IACpC,CAAC;AACD;IACA;IACA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;IACxC;IACA,IAAI,IAAI,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;IAC3D,QAAQ,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;IAChD,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;IACrD,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAa,CAAC,CAAC;IACf,SAAS,CAAC;IACV,KAAK;IACL,CAAC;AACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,KAAK,EAAE;IAC5B,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IACjB,IAAI,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;IACrB,QAAQ,OAAO,SAAS,CAAC;IACzB,KAAK;IACL,IAAI,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;AACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE;IAC5C,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,QAAQ,MAAM,0BAA0B,CAAC;IACzC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACpB,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IACrC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE;IACtB,KAAK;AACL;IACA,IAAI,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC3C;IACA,QAAQ,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK;IACL,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAClD,QAAQ,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,QAAQ,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAQ,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK;AACL;IACA,IAAI,IAAI,YAAY,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,aAAa,CAAC;AAChH;IACA,IAAI,IAAI,OAAO,SAAS,CAAC,gBAAgB,KAAK,WAAW,EAAE;IAC3D,QAAQ,OAAO,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9D,KAAK,MAAM,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,WAAW,EAAE;IAC5D,QAAQ,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxD,KAAK;AACL;IACA,IAAI,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC;AACtC;IACA,IAAI,SAAS,CAAC,KAAK,GAAG,2CAA2C,CAAC;IAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AACvE;IACA,IAAI,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE;IAC/C,QAAQ,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,KAAK,MAAM;IACX,QAAQ,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;IACpC,QAAQ,SAAS,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE;IACxD,YAAY,IAAI,EAAE,MAAM;IACxB,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,UAAU,EAAE,IAAI;IAC5B,SAAS,CAAC,CAAC,CAAC;IACZ,KAAK;AACL;IACA,IAAI,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;AACD;IACA;IACA;IACA;IACA,SAAS,UAAU,GAAG;IACtB;IACA,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;IACnH,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA;IACA,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC/G,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA;IACA,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;IAClI,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA,IAAI,OAAO,KAAK,CAAC;IACjB,CAAC;AACD;IACA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;IACtC,QAAQ,OAAO,EAAE,CAAC;IAClB,KAAK;AACL;IACA,IAAI,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACjD,QAAQ,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,OAAO,CAAC,CAAC;IAC5C,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACA,SAAS,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,WAAW,IAAI,OAAO,EAAE;IAChC,QAAQ,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IACnC,KAAK,MAAM,IAAI,cAAc,IAAI,OAAO,EAAE;IAC1C,QAAQ,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;IACtC,KAAK,MAAM;IACX,QAAQ,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IACnC,KAAK;IACL,CAAC;AACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE;IAC9C;IACA,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAClF,KAAK;AACL;IACA,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACnC,IAAI,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B;IACA,IAAI,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IACpC,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,QAAQ,CAAC,OAAO,CAAC,SAAS,OAAO,EAAE;IAC3C,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,CAAC;IACX,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,QAAQ,IAAI,kBAAkB,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5G,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1D,QAAQ,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE;IAC3D,YAAY,IAAI,EAAE,YAAY;IAC9B,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,KAAK,CAAC;IACN,IAAI,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACtD,IAAI,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,IAAI,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAChD,IAAI,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,IAAI,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;IACtC,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;IACA,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IACzC,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IACxC,CAAC,MAAM,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE;IACtD,IAAI,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;IAC9C,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC,CAAC;AACD;IACA,SAAS,yBAAyB,GAAG;IACrC,IAAI,IAAI,SAAS,IAAI,QAAQ,IAAI,MAAM,EAAE;IACzC,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IAGL,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;IACnC,IAAI,IAAI,WAAW,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,IAAI,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1D,QAAoB,SAAS,EAAE,GAAG;AAClC;IACA,IAAI,IAAI,QAAQ,IAAI,OAAO,EAAE;IAC7B,QAAQ,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,QAAQ,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACpD,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;IAChD,QAAQ,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,KAAK;AACL;IACA,IAAI,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;IAChD,QAAQ,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,KAAK;AACL;IACA,IAAI,YAAY,GAAG,QAAQ,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;AAClD;IACA,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;IAC7B,QAAQ,WAAW,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5D,QAAQ,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1D,KAAK;AACL;IACA,IAAI,OAAO,YAAY,IAAI,EAAE,CAAC;IAC9B,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE;IAClD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;IAC5C,QAAQ,MAAM,2CAA2C,CAAC;IAC1D,KAAK;AACL;IACA,IAAI,IAAI,OAAO,aAAa,KAAK,WAAW,EAAE;IAC9C,QAAQ,MAAM,4HAA4H,CAAC;IAC3I,KAAK;AACL;IACA,IAAI,MAAM,GAAG,MAAM,IAAI;IACvB;IACA,QAAQ,QAAQ,EAAE,YAAY;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;IACjC,QAAQ,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IAC9F,YAAY,IAAI,MAAM,CAAC;IACvB,YAAY,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,EAAE;IAC7C,gBAAgB,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC3C,gBAAgB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,aAAa,MAAM;IACnB;IACA,gBAAgB,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,aAAa;IACb,YAAY,WAAW,GAAG,MAAM,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;IAClG,YAAY,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,CAAC;IACpE,SAAS;AACT;IACA,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,EAAE;IACxH;IACA,YAAY,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;IAC1C,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;AAC1B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,eAAe,GAAG,WAAW;IACtC,QAAQ,OAAO,YAAY,CAAC;IAC5B,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IAC7B,QAAQ,SAAS,GAAG,EAAE,CAAC;IACvB,QAAQ,YAAY,GAAG,EAAE,CAAC;AAC1B;IACA,QAAQ,IAAI,aAAa,GAAG,MAAM,CAAC;AACnC;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,aAAa,CAAC,CAAC;IAC3F,SAAS;AACT;IACA,QAAQ,IAAI,aAAa,EAAE;IAC3B;IACA,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,QAAQ,IAAI,CAAC,yBAAyB,EAAE,EAAE;IACtD;IACA,YAAY,aAAa,GAAG,WAAW,CAAC;IACxC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,IAAI,aAAa,CAAC,QAAQ,EAAE;IAC3F,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;IACxE,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACzC,oBAAoB,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/G,iBAAiB;AACjB;IACA,gBAAgB,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAC/F,aAAa;IACb,SAAS;AACT;IACA;IACA,QAAQ,IAAI;IACZ,YAAY,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC1E;IACA;IACA,YAAY,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACrD,SAAS,CAAC,OAAO,CAAC,EAAE;IACpB;IACA,YAAY,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3D,SAAS;AACT;IACA;IACA,QAAQ,IAAI,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,eAAe,IAAI,mBAAmB,IAAI,aAAa,IAAI,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;IACnL,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3G,aAAa;IACb,SAAS;AACT;IACA;IACA,QAAQ,aAAa,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE;IACpD,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;IACxB,gBAAgB,SAAS,CAAC,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,aAAa;AACb;IACA,YAAY,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;IACtD,gBAAgB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC3C,oBAAoB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9C,oBAAoB,eAAe,EAAE,CAAC;AACtC;IACA,oBAAoB,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;IACtE;IACA,wBAAwB,IAAI,IAAI,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IACtF,4BAA4B,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAC5D,yBAAyB,CAAC,CAAC;IAC3B,wBAAwB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;IAC3E;IACA;IACA,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE;IAC5C,oBAAoB,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;IACxD,wBAAwB,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IACxD,qBAAqB,CAAC,CAAC,CAAC;IACxB,oBAAoB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAClD,iBAAiB;IACjB,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC3E,gBAAgB,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAChD,aAAa,CAAC,CAAC;AACf;IACA,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;IACxC,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,gBAAgB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC9C,aAAa;IACb,SAAS,CAAC;AACV;IACA,QAAQ,aAAa,CAAC,OAAO,GAAG,WAAW;IAC3C,YAAY,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,SAAS,CAAC;AACV;IACA,QAAQ,aAAa,CAAC,OAAO,GAAG,WAAW;IAC3C,YAAY,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC;AACV;IACA,QAAQ,aAAa,CAAC,QAAQ,GAAG,WAAW;IAC5C,YAAY,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,SAAS,CAAC;AACV;IACA,QAAQ,aAAa,CAAC,MAAM,GAAG,WAAW;IAC1C,YAAY,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,SAAS,CAAC;AACV;IACA,QAAQ,aAAa,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;IAChD,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IAC7B,gBAAgB,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;IAC5C,aAAa;AACb;IACA,YAAY,SAAS,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AAC9C;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC;IACA,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;IACxF,oBAAoB,OAAO,CAAC,KAAK,CAAC,gGAAgG,EAAE,KAAK,CAAC,CAAC;IAC3I,iBAAiB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;IAC/F,oBAAoB,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACvG,iBAAiB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;IAC3F,oBAAoB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;IACzE,iBAAiB;AACjB;IACA;IACA,qBAAqB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;IACvD,oBAAoB,OAAO,CAAC,KAAK,CAAC,2IAA2I,EAAE,KAAK,CAAC,CAAC;IACtL,iBAAiB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,EAAE;IACvE,oBAAoB,OAAO,CAAC,KAAK,CAAC,qQAAqQ,EAAE,KAAK,CAAC,CAAC;IAChT,iBAAiB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE;IACjE,oBAAoB,OAAO,CAAC,KAAK,CAAC,wJAAwJ,EAAE,KAAK,CAAC,CAAC;IACnM,iBAAiB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;IAC1D,oBAAoB,OAAO,CAAC,KAAK,CAAC,8EAA8E,EAAE,KAAK,CAAC,CAAC;IACzH,iBAAiB,MAAM;IACvB,oBAAoB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAChE,iBAAiB;IACjB,aAAa;AACb;IACA,YAAY,CAAC,SAAS,MAAM,EAAE;IAC9B,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE;IAClG,oBAAoB,OAAO,MAAM,CAAC,SAAS,CAAC;AAC5C;IACA;IACA,oBAAoB,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,oBAAoB,OAAO;IAC3B,iBAAiB;AACjB;IACA,gBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,aAAa,GAAG,CAAC;AACjB;IACA,YAAY,IAAI,aAAa,CAAC,KAAK,KAAK,UAAU,IAAI,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE;IACzF,gBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC;IACrC,aAAa;IACb,SAAS,CAAC;AACV;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;IAClD,YAAY,eAAe,EAAE,CAAC;IAC9B,YAAY,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,SAAS,MAAM;IACf;IACA;AACA;IACA,YAAY,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS;AACT;IACA,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;IACjC,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC;IAClC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB;IACA,IAAI,SAAS,eAAe,GAAG;IAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACnD;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;IACtD,YAAY,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7F,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,WAAW,CAAC,YAAY,EAAE;IACvC,QAAQ,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,EAAE;IACrD,YAAY,OAAO,aAAa,CAAC,QAAQ,CAAC;IAC1C,SAAS;AACT;IACA,QAAQ,OAAO,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC;IACrD,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,QAAQ,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC7C;IACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC;IACA,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;AAC1C;IACA,QAAQ,IAAI,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE;IACjD,YAAY,aAAa,CAAC,IAAI,EAAE,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;IAClD,YAAY,UAAU,CAAC,WAAW;IAClC,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;IACnD,oBAAoB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;IAC7C,iBAAiB,CAAC,CAAC;AACnB;IACA,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,aAAa,EAAE,GAAG,CAAC,CAAC;IACpB,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE;IACjD,YAAY,aAAa,CAAC,KAAK,EAAE,CAAC;IAClC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,aAAa,CAAC,KAAK,KAAK,QAAQ,EAAE;IAC9C,YAAY,aAAa,CAAC,MAAM,EAAE,CAAC;IACnC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE;IAClE,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3C,SAAS;AACT;IACA,QAAQ,mBAAmB,EAAE,CAAC;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,YAAY,GAAG,EAAE,CAAC;IAC1B,QAAQ,aAAa,GAAG,IAAI,CAAC;IAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IAC7B,KAAK;AACL;IACA;IACA,IAAI,IAAI,aAAa,CAAC;AACtB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,mBAAmB,GAAG,WAAW;IAC1C,QAAQ,OAAO,aAAa,CAAC;IAC7B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,IAAI,QAAQ,IAAI,WAAW,EAAE;IACrC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IACrC,gBAAgB,OAAO,KAAK,CAAC;IAC7B,aAAa;IACb,SAAS,MAAM,IAAI,OAAO,IAAI,WAAW,EAAE;IAC3C,YAAY,IAAI,WAAW,CAAC,KAAK,EAAE;IACnC,gBAAgB,OAAO,KAAK,CAAC;IAC7B,aAAa;IACb,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,OAAO,UAAU,CAAC;IAC9B,SAAS;AACT;IACA,QAAQ,OAAO,aAAa,CAAC,KAAK,IAAI,UAAU,CAAC;IACjD,KAAK,CAAC;AACN;IACA;IACA,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW;IACnC,QAAQ,OAAO,SAAS,CAAC;IACzB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,WAAW,EAAE;IAC9D,QAAQ,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC;IAC9C,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA;IACA;IACA,IAAI,CAAC,SAAS,MAAM,GAAG;IACvB,QAAQ,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,sBAAsB,KAAK,KAAK,EAAE;IACvE,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,mBAAmB,EAAE,KAAK,KAAK,EAAE;IAC7C,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1D,aAAa;IACb,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,KAAK,GAAG,CAAC;AACT;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;IACN,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACxD,CAAC;AACD;IACA;IACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE;IAClD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;IACjD,QAAQ,MAAM,kCAAkC,CAAC;IACjD,KAAK;AACL;IACA,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC1B;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA;IACA,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;IACzB,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;IAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;IAC1B,IAAI,IAAI,eAAe,GAAG,CAAC,CAAC;IAC5B,IAAI,IAAI,WAAW,CAAC;AACpB;IACA,IAAI,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACjD;IACA;IACA,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE;IACrC,QAAQ,qBAAqB,GAAG,CAAC,CAAC;IAClC,KAAK;AACL;IACA,IAAI,IAAI,MAAM,CAAC,qBAAqB,KAAK,CAAC,EAAE;IAC5C,QAAQ,qBAAqB,GAAG,CAAC,CAAC;IAClC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,GAAG,CAAC,EAAE;IAC7D,QAAQ,qBAAqB,GAAG,CAAC,CAAC;IAClC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IAC7B,QAAQ,OAAO,CAAC,GAAG,CAAC,2DAA2D,GAAG,qBAAqB,CAAC,CAAC;IACzG,KAAK;AACL;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,WAAW,EAAE;IAC9D,QAAQ,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAC7C,KAAK;AACL;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,IAAI,MAAM,CAAC,sBAAsB,KAAK,KAAK,EAAE;IACrD;IACA,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS;AACT;IACA,QAAQ,IAAI,QAAQ,IAAI,WAAW,EAAE;IACrC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IACrC,gBAAgB,OAAO,KAAK,CAAC;IAC7B,aAAa;IACb,SAAS,MAAM,IAAI,OAAO,IAAI,WAAW,EAAE;IAC3C,YAAY,IAAI,WAAW,CAAC,KAAK,EAAE;IACnC,gBAAgB,OAAO,KAAK,CAAC;IAC7B,aAAa;IACb,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,IAAI,mBAAmB,EAAE,KAAK,KAAK,EAAE;IAC7C,YAAY,MAAM,yCAAyC,CAAC;IAC5D,SAAS;AACT;IACA,QAAQ,cAAc,EAAE,CAAC;AACzB;IACA,QAAQ,qBAAqB,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,QAAQ,SAAS,GAAG,IAAI,CAAC;AACzB;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;IACrD,YAAY,MAAM,EAAE,CAAC;IACrB,SAAS;IACT,KAAK,CAAC;AACN;IACA,IAAI,SAAS,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE;IACrD,QAAQ,SAAS,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE;IAC/C,YAAY,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrE;IACA;IACA,YAAY,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1D,YAAY,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,YAAY,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/C,YAAY,IAAI,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;IAC7E,YAAY,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzD;IACA,YAAY,IAAI,qBAAqB,KAAK,CAAC,EAAE;IAC7C,gBAAgB,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;IACnF,gBAAgB,YAAY,GAAG,YAAY,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;AACrF;IACA,gBAAgB,IAAI,eAAe,EAAE;IACrC,oBAAoB,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7F,oBAAoB,YAAY,GAAG,gBAAgB,CAAC,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAC/F,iBAAiB;IACjB,aAAa;AACb;IACA,YAAY,IAAI,qBAAqB,KAAK,CAAC,EAAE;IAC7C,gBAAgB,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;AACnF;IACA,gBAAgB,IAAI,eAAe,EAAE;IACrC,oBAAoB,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7F,iBAAiB;IACjB,aAAa;AACb;IACA;IACA,YAAY,IAAI,eAAe,EAAE;IACjC,gBAAgB,UAAU,GAAG,eAAe,CAAC;IAC7C,aAAa;AACb;IACA;IACA;IACA,YAAY,SAAS,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE;IAC1E,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC;IACzF,gBAAgB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjC,gBAAgB,IAAI,YAAY,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,gBAAgB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACvD,oBAAoB,IAAI,GAAG,GAAG,CAAC,GAAG,YAAY,CAAC;IAC/C,oBAAoB,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACnE,oBAAoB,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjE,oBAAoB,IAAI,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC;IAC/C,oBAAoB,OAAO,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACvF,iBAAiB;IACjB,gBAAgB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,gBAAgB,OAAO,OAAO,CAAC;IAC/B,aAAa;AACb;IACA,YAAY,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/D,gBAAgB,OAAO,MAAM,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,OAAO,CAAC;IAC3D,aAAa;AACb;IACA,YAAY,SAAS,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE;IAC1D,gBAAgB,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACvD,gBAAgB,IAAI,MAAM,GAAG,CAAC,CAAC;IAC/B,gBAAgB,IAAI,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;AAC/C;IACA,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;IAC9C,oBAAoB,IAAI,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAClD,oBAAoB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,oBAAoB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IAC5C,iBAAiB;AACjB;IACA,gBAAgB,OAAO,MAAM,CAAC;IAC9B,aAAa;AACb;IACA,YAAY,SAAS,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE;IAC3D,gBAAgB,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACtE;IACA,gBAAgB,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AACtD;IACA,gBAAgB,IAAI,UAAU,GAAG,CAAC,CAAC;AACnC;IACA,gBAAgB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG;IACrD,oBAAoB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9D,oBAAoB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAC/D,oBAAoB,UAAU,EAAE,CAAC;IACjC,iBAAiB;IACjB,gBAAgB,OAAO,MAAM,CAAC;IAC9B,aAAa;AACb;IACA,YAAY,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACzD,gBAAgB,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;IAC9C,oBAAoB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,iBAAiB;IACjB,aAAa;AACb;IACA;IACA,YAAY,IAAI,WAAW,CAAC;AAC5B;IACA,YAAY,IAAI,qBAAqB,KAAK,CAAC,EAAE;IAC7C,gBAAgB,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACpE,aAAa;AACb;IACA,YAAY,IAAI,qBAAqB,KAAK,CAAC,EAAE;IAC7C,gBAAgB,WAAW,GAAG,WAAW,CAAC;IAC1C,aAAa;AACb;IACA,YAAY,IAAI,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;AACvD;IACA;IACA,YAAY,IAAI,qBAAqB,GAAG,EAAE,GAAG,iBAAiB,GAAG,CAAC,CAAC;AACnE;IACA,YAAY,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAChE;IACA,YAAY,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5C;IACA;IACA,YAAY,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C;IACA;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,GAAG,iBAAiB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAChE;IACA;IACA,YAAY,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C;IACA;IACA;IACA,YAAY,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACxC;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAC5D;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACjD;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,qBAAqB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7E;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,qBAAqB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAChE;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;IACA;IACA;IACA,YAAY,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C;IACA;IACA,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5D;IACA;IACA,YAAY,IAAI,GAAG,GAAG,iBAAiB,CAAC;IACxC,YAAY,IAAI,KAAK,GAAG,EAAE,CAAC;IAC3B,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC;IAC3B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;IAC1C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/E,gBAAgB,KAAK,IAAI,CAAC,CAAC;IAC3B,aAAa;AACb;IACA,YAAY,IAAI,EAAE,EAAE;IACpB,gBAAgB,OAAO,EAAE,CAAC;IAC1B,oBAAoB,MAAM,EAAE,MAAM;IAClC,oBAAoB,IAAI,EAAE,IAAI;IAC9B,iBAAiB,CAAC,CAAC;IACnB,aAAa;AACb;IACA,YAAY,WAAW,CAAC;IACxB,gBAAgB,MAAM,EAAE,MAAM;IAC9B,gBAAgB,IAAI,EAAE,IAAI;IAC1B,aAAa,CAAC,CAAC;IACf,SAAS;AACT;IACA,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;IAC7B,YAAY,iBAAiB,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;IACrD,gBAAgB,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,aAAa,CAAC,CAAC;IACf,YAAY,OAAO;IACnB,SAAS;AACT;AACA;IACA,QAAQ,IAAI,SAAS,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC9D;IACA,QAAQ,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IAC9C,YAAY,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD;IACA;IACA,YAAY,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACrD;IACA;IACA,YAAY,SAAS,CAAC,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC;AACV;IACA,QAAQ,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK;AACL;IACA,IAAI,SAAS,kBAAkB,CAAC,SAAS,EAAE;IAC3C,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC1E,YAAY,qCAAqC,GAAG,SAAS,CAAC,IAAI,GAAG,cAAc;IACnF,SAAS,EAAE;IACX,YAAY,IAAI,EAAE,wBAAwB;IAC1C,SAAS,CAAC,CAAC,CAAC;AACZ;IACA,QAAQ,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAQ,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IACrC,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,QAAQ,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC7C;IACA;IACA,QAAQ,SAAS,GAAG,KAAK,CAAC;AAC1B;IACA,QAAQ,qBAAqB,CAAC;IAC9B,YAAY,eAAe,EAAE,eAAe;IAC5C,YAAY,UAAU,EAAE,UAAU;IAClC,YAAY,qBAAqB,EAAE,qBAAqB;IACxD,YAAY,yBAAyB,EAAE,eAAe;IACtD,YAAY,WAAW,EAAE,WAAW;IACpC,YAAY,YAAY,EAAE,qBAAqB,KAAK,CAAC,GAAG,EAAE,GAAG,YAAY;IACzE,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACrC,SAAS,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE;IAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;IACzC,gBAAgB,IAAI,EAAE,WAAW;IACjC,aAAa,CAAC,CAAC;AACf;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B;IACA,YAAY,IAAI,CAAC,UAAU,GAAG,eAAe,IAAI,UAAU,CAAC;IAC5D,YAAY,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACzC;IACA;IACA,YAAY,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;AAC1C;IACA,YAAY,qBAAqB,GAAG,KAAK,CAAC;AAC1C;IACA,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA,IAAI,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,WAAW,EAAE;IAClD,QAAQ,SAAS,CAAC,OAAO,GAAG;IAC5B,YAAY,uBAAuB,EAAE,IAAI;IACzC,YAAY,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,kBAAkB;IAC1E,SAAS,CAAC;IACV,KAAK;AACL;IACA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,IAAI,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,KAAK,QAAQ,EAAE;IACpH,QAAQ,SAAS,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACzF,KAAK;AACL;IACA,IAAI,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC5D;IACA;IACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;AAClE;IACA,IAAI,IAAI,iBAAiB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACzE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA;IACA,IAAI,IAAI,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzF;IACA,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;IACtD,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7G,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,OAAO,CAAC,oBAAoB,EAAE;IACtC,QAAQ,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;IAC7G,KAAK,MAAM,IAAI,OAAO,CAAC,qBAAqB,EAAE;IAC9C,QAAQ,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;IAC9G,KAAK,MAAM;IACX,QAAQ,MAAM,8CAA8C,CAAC;IAC7D,KAAK;AACL;IACA;IACA,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IAC5B,QAAQ,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC5C,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;AAChH;IACA,IAAI,IAAI,UAAU,GAAG,KAAK,IAAI,UAAU,GAAG,KAAK,EAAE;IAClD;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAC5E,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IAC7B,QAAQ,IAAI,MAAM,CAAC,eAAe,EAAE;IACpC,YAAY,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1E,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;IACzB;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,QAAQ,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,IAAI,mBAAmB,EAAE,KAAK,KAAK,EAAE;IAC7C,YAAY,MAAM,yCAAyC,CAAC;IAC5D,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnE,aAAa;IACb,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,QAAQ,GAAG,KAAK,CAAC;IACzB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC;AAC9C;IACA,QAAQ,IAAI,SAAS,EAAE;IACvB,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3C,SAAS;AACT;IACA,QAAQ,mBAAmB,EAAE,CAAC;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,cAAc,GAAG;IAC9B,QAAQ,WAAW,GAAG,EAAE,CAAC;IACzB,QAAQ,YAAY,GAAG,EAAE,CAAC;IAC1B,QAAQ,eAAe,GAAG,CAAC,CAAC;IAC5B,QAAQ,qBAAqB,GAAG,KAAK,CAAC;IACtC,QAAQ,SAAS,GAAG,KAAK,CAAC;IAC1B,QAAQ,QAAQ,GAAG,KAAK,CAAC;IACzB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB;IACA,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACzC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IAC3D,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC/C,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC/C;IACA,QAAQ,qBAAqB,GAAG;IAChC,YAAY,IAAI,EAAE,EAAE;IACpB,YAAY,KAAK,EAAE,EAAE;IACrB,YAAY,eAAe,EAAE,CAAC;IAC9B,SAAS,CAAC;IACV,KAAK;AACL;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,IAAI,WAAW,EAAE;IACzB,YAAY,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;IAC9C,YAAY,WAAW,CAAC,UAAU,EAAE,CAAC;IACrC,YAAY,WAAW,GAAG,IAAI,CAAC;IAC/B,SAAS;AACT;IACA,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,UAAU,CAAC,UAAU,EAAE,CAAC;IACpC,YAAY,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS;AACT;IACA,QAAQ,cAAc,EAAE,CAAC;IACzB,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;AACN;IACA,IAAI,IAAI,qBAAqB,GAAG,KAAK,CAAC;AACtC;IACA,IAAI,SAAS,2BAA2B,CAAC,CAAC,EAAE;IAC5C,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,mBAAmB,EAAE,KAAK,KAAK,EAAE;IAC7C,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1D,aAAa;IACb,YAAY,WAAW,CAAC,UAAU,EAAE,CAAC;IACrC,YAAY,SAAS,GAAG,KAAK,CAAC;IAC9B,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,YAAY,IAAI,UAAU,EAAE;IAC5B,gBAAgB,UAAU,CAAC,UAAU,EAAE,CAAC;IACxC,gBAAgB,UAAU,GAAG,IAAI,CAAC;IAClC,aAAa;IACb,YAAY,OAAO;IACnB,SAAS;AACT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,qBAAqB,EAAE;IACpC,YAAY,qBAAqB,GAAG,IAAI,CAAC;IACzC,YAAY,IAAI,MAAM,CAAC,qBAAqB,EAAE;IAC9C,gBAAgB,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC/C,aAAa;AACb;IACA,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;IACrC,gBAAgB,MAAM,CAAC,YAAY,EAAE,CAAC;IACtC,aAAa;IACb,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACnD;IACA;IACA,QAAQ,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC;IACA,QAAQ,IAAI,qBAAqB,KAAK,CAAC,EAAE;IACzC,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACxD,YAAY,IAAI,OAAO,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IAClD,YAAY,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,SAAS;AACT;IACA,QAAQ,eAAe,IAAI,UAAU,CAAC;AACtC;IACA;IACA,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC/C;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;IACrD,YAAY,qBAAqB,CAAC,eAAe,IAAI,UAAU,CAAC;IAChE,YAAY,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD;IACA,YAAY,IAAI,qBAAqB,KAAK,CAAC,EAAE;IAC7C,gBAAgB,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,aAAa;IACb,SAAS;IACT,KAAK;AACL;IACA,IAAI,WAAW,CAAC,cAAc,GAAG,2BAA2B,CAAC;AAC7D;IACA;IACA,IAAI,IAAI,OAAO,CAAC,4BAA4B,EAAE;IAC9C,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC;IACpE,KAAK,MAAM;IACX,QAAQ,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACvD,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC3C;IACA;IACA,IAAI,IAAI,qBAAqB,GAAG;IAChC,QAAQ,IAAI,EAAE,EAAE;IAChB,QAAQ,KAAK,EAAE,EAAE;IACjB,QAAQ,eAAe,EAAE,CAAC;IAC1B,KAAK,CAAC;AACN;IACA;IACA,IAAI,SAAS,MAAM,GAAG;IACtB,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;IACnH,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE;IAC/C,YAAY,qBAAqB,CAAC;IAClC,gBAAgB,eAAe,EAAE,eAAe;IAChD,gBAAgB,UAAU,EAAE,UAAU;IACtC,gBAAgB,qBAAqB,EAAE,qBAAqB;IAC5D,gBAAgB,yBAAyB,EAAE,qBAAqB,CAAC,eAAe;IAChF,gBAAgB,WAAW,EAAE,qBAAqB,CAAC,IAAI;IACvD,gBAAgB,YAAY,EAAE,qBAAqB,KAAK,CAAC,GAAG,EAAE,GAAG,qBAAqB,CAAC,KAAK;IAC5F,aAAa,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE;IACtC,gBAAgB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;IAC5C,oBAAoB,IAAI,EAAE,WAAW;IACrC,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7C;IACA,gBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACrD,aAAa,CAAC,CAAC;AACf;IACA,YAAY,qBAAqB,GAAG;IACpC,gBAAgB,IAAI,EAAE,EAAE;IACxB,gBAAgB,KAAK,EAAE,EAAE;IACzB,gBAAgB,eAAe,EAAE,CAAC;IAClC,aAAa,CAAC;IACd,SAAS,MAAM;IACf,YAAY,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,SAAS;IACT,KAAK;IACL,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACxD,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE;IAC7C,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;IAC5C,QAAQ,MAAM,8DAA8D,CAAC;IAC7E,KAAK;AACL;IACA,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC/B,QAAQ,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IAClC,KAAK;AACL;IACA;IACA,IAAI,IAAI,+BAA+B,GAAG,KAAK,CAAC;IAChD,IAAI,CAAC,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;IACxF,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;IACtD,YAAY,+BAA+B,GAAG,IAAI,CAAC;IACnD,SAAS;IACT,KAAK,CAAC,CAAC;AACP;IACA,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,IAAI,CAAC,CAAC,MAAM,CAAC,kBAAkB,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACzG;IACA,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC;IAC3B,IAAI,IAAI,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC3E,IAAI,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;IAClD,QAAQ,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,KAAK;AACL;IACA,IAAI,IAAI,SAAS,IAAI,aAAa,GAAG,EAAE,EAAE;IACzC,QAAQ,+BAA+B,GAAG,KAAK,CAAC;IAChD,KAAK;AACL;IACA,IAAI,IAAI,MAAM,CAAC,iBAAiB,EAAE;IAClC,QAAQ,+BAA+B,GAAG,KAAK,CAAC;IAChD,KAAK;AACL;IACA,IAAI,IAAI,YAAY,EAAE,mBAAmB,CAAC;AAC1C;IACA,IAAI,IAAI,+BAA+B,EAAE;IACzC,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACjG,SAAS;AACT;IACA,QAAQ,IAAI,WAAW,YAAY,iBAAiB,EAAE;IACtD,YAAY,YAAY,GAAG,WAAW,CAAC;IACvC,SAAS,MAAM,IAAI,WAAW,YAAY,wBAAwB,EAAE;IACpE,YAAY,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;IAC9C,SAAS,MAAM;IACf,YAAY,MAAM,mEAAmE,CAAC;IACtF,SAAS;IACT,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,EAAE;IAC5C,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,WAAW,CAAC;AACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,WAAW,GAAG,IAAI,CAAC;AAC3B;IACA,QAAQ,IAAI,+BAA+B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;IAC1E;IACA,YAAY,IAAI,iBAAiB,CAAC;IAClC,YAAY,IAAI,eAAe,IAAI,YAAY,EAAE;IACjD,gBAAgB,iBAAiB,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACnE,aAAa,MAAM,IAAI,kBAAkB,IAAI,YAAY,EAAE;IAC3D,gBAAgB,iBAAiB,GAAG,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACtE,aAAa,MAAM,IAAI,qBAAqB,IAAI,YAAY,EAAE;IAC9D,gBAAgB,iBAAiB,GAAG,YAAY,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACzE,aAAa;AACb;IACA,YAAY,IAAI;IAChB,gBAAgB,IAAI,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IACjD,gBAAgB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,gBAAgB,iBAAiB,GAAG,QAAQ,CAAC;IAC7C,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE;AAC1B;IACA,YAAY,IAAI,CAAC,iBAAiB,EAAE;IACpC,gBAAgB,MAAM,sCAAsC,CAAC;IAC7D,aAAa;AACb;IACA;IACA;IACA,YAAY,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;IAC7E,gBAAgB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY;IACzD,aAAa,CAAC,CAAC;IACf,YAAY,mBAAmB,CAAC,MAAM,EAAE,CAAC;IACzC,SAAS,MAAM;IACf,YAAY,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IAC/B,YAAY,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,YAAY,eAAe,EAAE,CAAC;IAC9B,SAAS;AACT;IACA,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;IACjC,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC;IAClC,SAAS;IACT,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;IAC5C,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;IAC7D,YAAY,QAAQ,EAAE,CAAC;IACvB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAChD,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;IACnD,YAAY,IAAI,eAAe,GAAG,YAAY,GAAG,GAAG,CAAC;IACrD,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,GAAG,YAAY,GAAG,mBAAmB,CAAC,CAAC;IACxF,aAAa;AACb;IACA,YAAY,IAAI,MAAM,CAAC,kBAAkB,EAAE;IAC3C,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACzE,aAAa;AACb;IACA,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC9D,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC3C,SAAS;AACT;IACA,QAAQ,QAAQ,EAAE,CAAC;IACnB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,WAAW,GAAG,KAAK,CAAC;AAC5B;IACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB;IACA,QAAQ,IAAI,+BAA+B,IAAI,mBAAmB,EAAE;IACpE,YAAY,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW;IACtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;IAC1C,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACzC,oBAAoB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACvD,iBAAiB;AACjB;IACA,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjC;IACA,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACvC,oBAAoB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE;IAC7C,wBAAwB,IAAI,EAAE,YAAY;IAC1C,qBAAqB,CAAC,CAAC;IACvB,iBAAiB;AACjB;IACA,gBAAgB,IAAI,QAAQ,EAAE;IAC9B,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,iBAAiB;AACjB;IACA,gBAAgB,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IACnC,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA,IAAI,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,iBAAiB,GAAG,IAAI,CAAC;AACjC;IACA,QAAQ,IAAI,mBAAmB,YAAY,mBAAmB,EAAE;IAChE,YAAY,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACxC,YAAY,OAAO;IACnB,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,iBAAiB,GAAG,KAAK,CAAC;AAClC;IACA,QAAQ,IAAI,mBAAmB,YAAY,mBAAmB,EAAE;IAChE,YAAY,mBAAmB,CAAC,MAAM,EAAE,CAAC;IACzC,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,WAAW,EAAE;IAC1B,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,IAAI,WAAW,EAAE;IACzB,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3C,SAAS;IACT,QAAQ,mBAAmB,EAAE,CAAC;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IAC3B,QAAQ,WAAW,GAAG,KAAK,CAAC;IAC5B,QAAQ,iBAAiB,GAAG,KAAK,CAAC;IAClC,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IACjC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;AACN;IACA,IAAI,SAAS,WAAW,GAAG;IAC3B;IACA,QAAQ,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzD,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjD;IACA;IACA,QAAQ,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAC5C,QAAQ,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AAC9C;IACA;IACA,QAAQ,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C;IACA;IACA,QAAQ,OAAO,SAAS,CAAC;IACzB,KAAK;AACL;IACA,IAAI,SAAS,eAAe,GAAG;IAC/B,QAAQ,IAAI,iBAAiB,EAAE;IAC/B,YAAY,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,YAAY,OAAO,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACpD,SAAS;AACT;IACA,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;IAC7D,YAAY,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC3D;IACA,YAAY,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC5C;IACA,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,gBAAgB,KAAK,EAAE,WAAW,EAAE;IACpC,gBAAgB,QAAQ,EAAE,QAAQ;IAClC,aAAa,CAAC,CAAC;AACf;IACA,YAAY,IAAI,WAAW,EAAE;IAC7B,gBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAClE,aAAa;IACb,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,WAAW,CAAC,WAAW,EAAE;IACjC,YAAY,SAAS,EAAE,OAAO,MAAM,CAAC,gBAAgB,KAAK,WAAW,IAAI,MAAM,CAAC,gBAAgB;IAChG,YAAY,UAAU,EAAE,SAAS,MAAM,EAAE;IACzC,gBAAgB,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC/D,gBAAgB,IAAI,CAAC,QAAQ,EAAE;IAC/B,oBAAoB,OAAO,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7E,iBAAiB;AACjB;IACA;IACA,gBAAgB,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAChD;IACA,gBAAgB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,oBAAoB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,oBAAoB,QAAQ,EAAE,QAAQ;IACtC,iBAAiB,CAAC,CAAC;AACnB;IACA,gBAAgB,IAAI,WAAW,EAAE;IACjC,oBAAoB,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACtE,iBAAiB;IACjB,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA,IAAI,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACxC;IACA,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9C,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE;AAC7C;IACA,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC1B;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC/B,QAAQ,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IAClC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IAC7B,QAAQ,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IAC3B,YAAY,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;IAC/B,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAC5B,YAAY,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IAChC,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IAC3B,YAAY,MAAM,CAAC,KAAK,GAAG;IAC3B,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrC,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAC5B,YAAY,MAAM,CAAC,MAAM,GAAG;IAC5B,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrC,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAClD,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;AACpD;IACA,QAAQ,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C;IACA;IACA,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,YAAY,gBAAgB,EAAE;IACtE,YAAY,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AAC7C;IACA,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;IACrC,gBAAgB,MAAM,CAAC,YAAY,EAAE,CAAC;IACtC,aAAa;IACb,SAAS,MAAM;IACf,YAAY,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpD;IACA,YAAY,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC7C;IACA,YAAY,KAAK,CAAC,gBAAgB,GAAG,WAAW;IAChD,gBAAgB,IAAI,MAAM,CAAC,YAAY,EAAE;IACzC,oBAAoB,MAAM,CAAC,YAAY,EAAE,CAAC;IAC1C,iBAAiB;IACjB,aAAa,CAAC;AACd;IACA,YAAY,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7C,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/C,SAAS;AACT;IACA,QAAQ,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC3B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;AACrB;IACA,QAAQ,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACxC,QAAQ,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AACpC;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;IACjC,YAAY,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChF,YAAY,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/G,SAAS;AACT;IACA,QAAQ,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,UAAU,CAAC,aAAa,EAAE;IACvC,QAAQ,aAAa,GAAG,OAAO,aAAa,KAAK,WAAW,GAAG,aAAa,GAAG,EAAE,CAAC;AAClF;IACA,QAAQ,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;IACvD,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,YAAY,OAAO,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACxE,SAAS;AACT;IACA,QAAQ,IAAI,iBAAiB,EAAE;IAC/B,YAAY,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,YAAY,OAAO,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/C,SAAS;AACT;IACA;IACA,QAAQ,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACxC;IACA,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;IAC1B;IACA;IACA,YAAY,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,SAAS;AACT;IACA,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpE,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC3B,YAAY,QAAQ,EAAE,QAAQ;IAC9B,YAAY,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;IACjD,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACjE,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,SAAS,CAAC,CAAC,EAAE;IAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,YAAY,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC9B;IACA,QAAQ,CAAC,SAAS,IAAI,GAAG;IACzB,YAAY,CAAC,EAAE,CAAC;IAChB,YAAY,IAAI,CAAC,KAAK,MAAM,EAAE;IAC9B,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA;IACA,YAAY,UAAU,CAAC,WAAW;IAClC,gBAAgB,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,CAAC;IAClB,SAAS,GAAG,CAAC;IACb,KAAK;AACL;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE;IAChG,QAAQ,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3D,QAAQ,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzC,QAAQ,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,QAAQ,IAAI,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;AAC9B;IACA,QAAQ,IAAI,kBAAkB,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC;IACvD,QAAQ,IAAI,aAAa,GAAG,CAAC,cAAc,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,IAAI,OAAO,CAAC,MAAM;IACrG,YAAY,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5C,QAAQ,IAAI,WAAW,GAAG;IAC1B,YAAY,CAAC,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC;IAChB,SAAS,CAAC;IACV,QAAQ,IAAI,kBAAkB,GAAG,IAAI,CAAC,IAAI;IAC1C,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5B,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5B,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5B,SAAS,CAAC;IACV,QAAQ,IAAI,YAAY,GAAG,aAAa,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;IACzG,QAAQ,IAAI,cAAc,GAAG,eAAe,IAAI,eAAe,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;IACnH,QAAQ,IAAI,cAAc,GAAG,KAAK,CAAC;AACnC;IACA,QAAQ,SAAS,CAAC;IAClB,YAAY,MAAM,EAAE,aAAa;IACjC,YAAY,cAAc,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE;IAC9C,gBAAgB,IAAI,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;AAC5D;IACA,gBAAgB,IAAI,WAAW,GAAG,WAAW;IAC7C,oBAAoB,IAAI,CAAC,cAAc,IAAI,WAAW,GAAG,aAAa,IAAI,WAAW,GAAG,cAAc,EAAE,CAEnF,MAAM;IAC3B;IACA,wBAAwB,IAAI,kBAAkB,EAAE;IAChD,4BAA4B,cAAc,GAAG,IAAI,CAAC;IAClD,yBAAyB;IACzB,wBAAwB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,qBAAqB;IACrB,oBAAoB,IAAI,EAAE,CAAC;IAC3B,iBAAiB,CAAC;AAClB;IACA,gBAAgB,IAAI,CAAC,cAAc,EAAE;IACrC,oBAAoB,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC5C,oBAAoB,KAAK,CAAC,MAAM,GAAG,WAAW;IAC9C,wBAAwB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtF,wBAAwB,IAAI,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClG,wBAAwB,aAAa,GAAG,CAAC,CAAC;IAC1C,wBAAwB,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5D,wBAAwB,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChE;IACA,wBAAwB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE;IACvE,4BAA4B,IAAI,YAAY,GAAG;IAC/C,gCAAgC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD,gCAAgC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC1D,gCAAgC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC1D,6BAA6B,CAAC;IAC9B,4BAA4B,IAAI,eAAe,GAAG,IAAI,CAAC,IAAI;IAC3D,gCAAgC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,gCAAgC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,gCAAgC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,6BAA6B,CAAC;IAC9B;IACA,4BAA4B,IAAI,eAAe,IAAI,kBAAkB,GAAG,YAAY,EAAE;IACtF,gCAAgC,aAAa,EAAE,CAAC;IAChD,6BAA6B;IAC7B,yBAAyB;IACzB,wBAAwB,WAAW,EAAE,CAAC;IACtC,qBAAqB,CAAC;IACtB,oBAAoB,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,iBAAiB,MAAM;IACvB,oBAAoB,WAAW,EAAE,CAAC;IAClC,iBAAiB;IACjB,aAAa;IACb,YAAY,QAAQ,EAAE,WAAW;IACjC,gBAAgB,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AACjF;IACA,gBAAgB,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;IAC9C;IACA;IACA,oBAAoB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,iBAAiB;IACjB,gBAAgB,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC;AAC9B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,QAAQ,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC7C;IACA,QAAQ,aAAa,GAAG,IAAI,CAAC;AAC7B;IACA,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;IACzB;IACA,QAAQ,UAAU,CAAC,WAAW;IAC9B;IACA;IACA;IACA,YAAY,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE;IAC5E,gBAAgB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvC;IACA;IACA,gBAAgB,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;IACzE,oBAAoB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,iBAAiB;AACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,gBAAgB,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;IAC9C,oBAAoB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AACtC;IACA,oBAAoB,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;IAC5C,wBAAwB,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE;IAClD,4BAA4B,IAAI,EAAE,YAAY;IAC9C,yBAAyB,CAAC,CAAC;IAC3B,qBAAqB;AACrB;IACA,oBAAoB,IAAI,QAAQ,EAAE;IAClC,wBAAwB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,qBAAqB;IACrB,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC;IACf,SAAS,EAAE,EAAE,CAAC,CAAC;IACf,KAAK,CAAC;AACN;IACA,IAAI,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,iBAAiB,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,iBAAiB,GAAG,KAAK,CAAC;AAClC;IACA,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3C,SAAS;IACT,QAAQ,mBAAmB,EAAE,CAAC;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IAC3B,QAAQ,aAAa,GAAG,IAAI,CAAC;IAC7B,QAAQ,iBAAiB,GAAG,KAAK,CAAC;IAClC,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IACjC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;AACN;IACA,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C;IACA,IAAI,IAAI,KAAK,CAAC;IACd,IAAI,IAAI,QAAQ,CAAC;IACjB,IAAI,IAAI,MAAM,CAAC;IACf,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9C,CAAC;AACD;IACA;IACA;IACA;AACA;IACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,IAAI,MAAM,GAAG,CAAC,WAAW;IACzB;AACA;IACA,IAAI,SAAS,WAAW,CAAC,QAAQ,EAAE;IACnC,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC;IACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IAC3B,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE;IAC1D,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE;IAC/B,YAAY,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,WAAW,IAAI,KAAK,EAAE;IAClC,YAAY,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;IAC1D,YAAY,MAAM,iFAAiF,CAAC;IACpG,SAAS;IACT,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACzB,YAAY,KAAK,EAAE,KAAK;IACxB,YAAY,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ;IAC/C,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA,IAAI,SAAS,kBAAkB,CAAC,SAAS,EAAE;IAC3C,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;IACrE,YAAY,oCAAoC,GAAG,SAAS,CAAC,IAAI,GAAG,cAAc;IAClF,SAAS,EAAE;IACX,YAAY,IAAI,EAAE,wBAAwB;IAC1C,SAAS,CAAC,CAAC,CAAC;AACZ;IACA,QAAQ,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;AACL;IACA,IAAI,SAAS,iBAAiB,CAAC,MAAM,EAAE;IACvC,QAAQ,SAAS,WAAW,CAAC,MAAM,EAAE;IACrC,YAAY,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,YAAY,IAAI,CAAC,IAAI,EAAE;IACvB,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa;AACb;IACA,YAAY,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC3C;IACA,YAAY,IAAI,IAAI,GAAG,CAAC;IACxB,gBAAgB,IAAI,EAAE,UAAU;IAChC,gBAAgB,MAAM,EAAE,CAAC;IACzB,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,EAAE;IACnB,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,EAAE;IACnB,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,EAAE;IACnB,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,EAAE;IACnB,oBAAoB,MAAM,EAAE,MAAM;IAClC,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,EAAE;IACnB,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,EAAE;IACnB,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,IAAI,EAAE,MAAM;IAChC,iBAAiB,CAAC;IAClB,aAAa,EAAE;IACf,gBAAgB,IAAI,EAAE,UAAU;IAChC,gBAAgB,MAAM,EAAE,CAAC;IACzB,oBAAoB,IAAI,EAAE,UAAU;IACpC,oBAAoB,MAAM,EAAE,CAAC;IAC7B,wBAAwB,MAAM,EAAE,GAAG;IACnC,wBAAwB,IAAI,EAAE,QAAQ;IACtC,qBAAqB,EAAE;IACvB,wBAAwB,MAAM,EAAE,QAAQ;IACxC,wBAAwB,IAAI,EAAE,MAAM;IACpC,qBAAqB,EAAE;IACvB,wBAAwB,MAAM,EAAE,QAAQ;IACxC,wBAAwB,IAAI,EAAE,MAAM;IACpC,qBAAqB,EAAE;IACvB,wBAAwB,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7D,wBAAwB,IAAI,EAAE,MAAM;IACpC,qBAAqB,CAAC;IACtB,iBAAiB,EAAE;IACnB,oBAAoB,IAAI,EAAE,UAAU;IACpC,oBAAoB,MAAM,EAAE,CAAC;IAC7B,wBAAwB,IAAI,EAAE,IAAI;IAClC,wBAAwB,MAAM,EAAE,CAAC;IACjC,4BAA4B,MAAM,EAAE,CAAC;IACrC,4BAA4B,IAAI,EAAE,IAAI;IACtC,yBAAyB,EAAE;IAC3B,4BAA4B,MAAM,EAAE,CAAC;IACrC,4BAA4B,IAAI,EAAE,MAAM;IACxC,yBAAyB,EAAE;IAC3B,4BAA4B,MAAM,EAAE,CAAC;IACrC,4BAA4B,IAAI,EAAE,IAAI;IACtC,yBAAyB,EAAE;IAC3B,4BAA4B,MAAM,EAAE,KAAK;IACzC,4BAA4B,IAAI,EAAE,QAAQ;IAC1C,yBAAyB,EAAE;IAC3B,4BAA4B,MAAM,EAAE,OAAO;IAC3C,4BAA4B,IAAI,EAAE,IAAI;IACtC,yBAAyB,EAAE;IAC3B,4BAA4B,MAAM,EAAE,KAAK;IACzC,4BAA4B,IAAI,EAAE,QAAQ;IAC1C,yBAAyB,EAAE;IAC3B,4BAA4B,MAAM,EAAE,CAAC;IACrC,4BAA4B,IAAI,EAAE,IAAI;IACtC,yBAAyB,EAAE;IAC3B,4BAA4B,IAAI,EAAE,IAAI;IACtC,4BAA4B,MAAM,EAAE,CAAC;IACrC,gCAAgC,MAAM,EAAE,IAAI,CAAC,KAAK;IAClD,gCAAgC,IAAI,EAAE,IAAI;IAC1C,6BAA6B,EAAE;IAC/B,gCAAgC,MAAM,EAAE,IAAI,CAAC,MAAM;IACnD,gCAAgC,IAAI,EAAE,IAAI;IAC1C,6BAA6B,CAAC;IAC9B,yBAAyB,CAAC;IAC1B,qBAAqB,CAAC;IACtB,iBAAiB,CAAC;IAClB,aAAa,CAAC,CAAC;AACf;IACA;IACA,YAAY,IAAI,WAAW,GAAG,CAAC,CAAC;IAChC,YAAY,IAAI,eAAe,GAAG,CAAC,CAAC;IACpC,YAAY,OAAO,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE;AAChD;IACA,gBAAgB,IAAI,aAAa,GAAG,EAAE,CAAC;IACvC,gBAAgB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxC,gBAAgB,GAAG;IACnB,oBAAoB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,oBAAoB,eAAe,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;IACpE,oBAAoB,WAAW,EAAE,CAAC;IAClC,iBAAiB,QAAQ,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,eAAe,GAAG,kBAAkB,EAAE;AAC9F;IACA,gBAAgB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvC,gBAAgB,IAAI,OAAO,GAAG;IAC9B,oBAAoB,IAAI,EAAE,UAAU;IACpC,oBAAoB,MAAM,EAAE,cAAc,CAAC,eAAe,EAAE,cAAc,EAAE,aAAa,CAAC;IAC1F,iBAAiB,CAAC;IAClB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,gBAAgB,eAAe,IAAI,eAAe,CAAC;IACnD,aAAa;AACb;IACA,YAAY,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,SAAS;AACT;IACA,QAAQ,SAAS,cAAc,CAAC,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE;IAChF,YAAY,OAAO,CAAC;IACpB,gBAAgB,MAAM,EAAE,eAAe;IACvC,gBAAgB,IAAI,EAAE,IAAI;IAC1B,aAAa,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IACvD,gBAAgB,IAAI,KAAK,GAAG,eAAe,CAAC;IAC5C,oBAAoB,WAAW,EAAE,CAAC;IAClC,oBAAoB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,oBAAoB,SAAS,EAAE,CAAC;IAChC,oBAAoB,QAAQ,EAAE,CAAC;IAC/B,oBAAoB,MAAM,EAAE,CAAC;IAC7B,oBAAoB,QAAQ,EAAE,CAAC;IAC/B,oBAAoB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;IACxD,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC;IAChD,gBAAgB,OAAO;IACvB,oBAAoB,IAAI,EAAE,KAAK;IAC/B,oBAAoB,EAAE,EAAE,IAAI;IAC5B,iBAAiB,CAAC;IAClB,aAAa,CAAC,CAAC,CAAC;IAChB,SAAS;AACT;IACA;AACA;IACA,QAAQ,SAAS,WAAW,CAAC,MAAM,EAAE;IACrC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;IAC5B,gBAAgB,WAAW,CAAC;IAC5B,oBAAoB,KAAK,EAAE,kFAAkF;IAC7G,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;IACvC,gBAAgB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;IACzC,gBAAgB,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9C;IACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACpD,gBAAgB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/C,aAAa;IACb,YAAY,OAAO;IACnB,gBAAgB,QAAQ,EAAE,QAAQ;IAClC,gBAAgB,KAAK,EAAE,KAAK;IAC5B,gBAAgB,MAAM,EAAE,MAAM;IAC9B,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,SAAS,WAAW,CAAC,GAAG,EAAE;IAClC,YAAY,IAAI,KAAK,GAAG,EAAE,CAAC;IAC3B,YAAY,OAAO,GAAG,GAAG,CAAC,EAAE;IAC5B,gBAAgB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACvC,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC/B,aAAa;IACb,YAAY,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,SAAS;AACT;IACA,QAAQ,SAAS,WAAW,CAAC,GAAG,EAAE;IAClC,YAAY,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAChE,gBAAgB,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvC,aAAa,CAAC,CAAC,CAAC;IAChB,SAAS;AACT;IACA,QAAQ,SAAS,YAAY,CAAC,IAAI,EAAE;IACpC,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;IAC1B,YAAY,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAChG,YAAY,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAC9B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IACrD,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,aAAa;IACb,YAAY,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS;AACT;IACA,QAAQ,SAAS,YAAY,CAAC,IAAI,EAAE;IACpC,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;IAC1B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClD,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC;IACA,gBAAgB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAC9C,oBAAoB,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,iBAAiB;AACjB;IACA,gBAAgB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAC9C,oBAAoB,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,iBAAiB;AACjB;IACA,gBAAgB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAC9C,oBAAoB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7C,iBAAiB;AACjB;IACA,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;IACtE,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,gBAAgB,IAAI,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnD,gBAAgB,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;IAC9G,gBAAgB,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AACxE;IACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,aAAa;AACb;IACA,YAAY,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;IAClC,gBAAgB,IAAI,EAAE,YAAY;IAClC,aAAa,CAAC,CAAC;IACf,SAAS;AAWT;IACA,QAAQ,SAAS,eAAe,CAAC,IAAI,EAAE;IACvC,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC;AAC1B;IACA,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC/B,gBAAgB,KAAK,IAAI,GAAG,CAAC;IAC7B,aAAa;AACb;IACA,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;IAChC,gBAAgB,KAAK,IAAI,CAAC,CAAC;IAC3B,aAAa;AACb;IACA,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;IAC7B,gBAAgB,KAAK,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC5C,aAAa;AACb;IACA,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;IAClC,gBAAgB,KAAK,IAAI,CAAC,CAAC;IAC3B,aAAa;AACb;IACA,YAAY,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE;IACrC,gBAAgB,MAAM,iCAAiC,CAAC;IACxD,aAAa;AACb;IACA,YAAY,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAC9G,gBAAgB,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC;IACA,YAAY,OAAO,GAAG,CAAC;IACvB,SAAS;AACT;IACA,QAAQ,SAAS,SAAS,CAAC,IAAI,EAAE;IACjC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C;IACA,YAAY,IAAI,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAChD,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,aAAa;AACb;IACA,YAAY,IAAI,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;AACnC;IACA;IACA,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,YAAY,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;IACjC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAClC,YAAY,OAAO;IACnB,gBAAgB,KAAK,EAAE,KAAK;IAC5B,gBAAgB,MAAM,EAAE,MAAM;IAC9B,gBAAgB,IAAI,EAAE,GAAG;IACzB,gBAAgB,IAAI,EAAE,IAAI;IAC1B,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;IAC9C,YAAY,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IACnF,gBAAgB,IAAI,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,gBAAgB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACjF,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,SAAS;AACT;IACA,QAAQ,SAAS,SAAS,CAAC,MAAM,EAAE;IACnC,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC;IAC3B,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B;IACA,YAAY,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;IAC3C,gBAAgB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClD,gBAAgB,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,gBAAgB,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,gBAAgB,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACtC,gBAAgB,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9C;IACA,gBAAgB,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM,EAAE;IACpD,oBAAoB,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,iBAAiB,MAAM;IACvB,oBAAoB,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,iBAAiB;IACjB,aAAa;IACb,YAAY,OAAO,MAAM,CAAC;IAC1B,SAAS;AACT;IACA,QAAQ,SAAS,cAAc,CAAC,GAAG,EAAE;IACrC,YAAY,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI;IAChC,gBAAgB,IAAI,UAAU,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IACrF,gBAAgB,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,EAAE;IAC9D,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,YAAY,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC3C,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS,CAAC,CAAC,CAAC;AACZ;IACA,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,EAAE;IACvD,QAAQ,IAAI,SAAS,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC9D;IACA,QAAQ,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IAC9C,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;IAClC,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,gBAAgB,OAAO;IACvB,aAAa;IACb,YAAY,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC;AACV;IACA,QAAQ,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,KAAK,CAAC;AACN;IACA,IAAI,OAAO;IACX;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,KAAK,EAAE,WAAW;IAC1B,KAAK,CAAC;IACN,CAAC,GAAG,CAAC;AACL;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAC9B,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;AACA;IACA,IAAI,WAAW,GAAG;IAClB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,EAAE,WAAW;IACrB,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB;IACA,QAAQ,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;IACvF,YAAY,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAC9E,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC;IAC1B,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IACnF,YAAY,EAAE,CAAC;IACf,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACxD;IACA,QAAQ,SAAS,iBAAiB,CAAC,QAAQ,EAAE;IAC7C,YAAY,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3D,SAAS;AACT;IACA,QAAQ,SAAS,OAAO,GAAG;IAC3B,YAAY,IAAI,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;AAChF;IACA,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;IAChC,gBAAgB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7F,aAAa;AACb;IACA,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;IAC9B,gBAAgB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzF,aAAa;AACb;IACA,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;IAChC,gBAAgB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7F,aAAa;AACb;IACA,YAAY,SAAS,YAAY,CAAC,WAAW,EAAE;IAC/C,gBAAgB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IACzG,oBAAoB,IAAI,IAAI,CAAC,QAAQ,EAAE;IACvC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxE,qBAAqB;IACrB,iBAAiB,CAAC;IAClB,aAAa;AACb;IACA,YAAY,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,YAAY,CAAC,SAAS,CAAC,CAAC;IACpC,SAAS;AACT;IACA,QAAQ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACvC;IACA,QAAQ,OAAO,CAAC,SAAS,GAAG,WAAW;IACvC,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,YAAY,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC;IACA,YAAY,IAAI,EAAE,CAAC,UAAU,EAAE;IAC/B,gBAAgB,IAAI,EAAE,CAAC,OAAO,KAAK,SAAS,EAAE;IAC9C,oBAAoB,IAAI,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9D,oBAAoB,UAAU,CAAC,SAAS,GAAG,WAAW;IACtD,wBAAwB,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC9C,wBAAwB,OAAO,EAAE,CAAC;IAClC,qBAAqB,CAAC;IACtB,iBAAiB,MAAM;IACvB,oBAAoB,OAAO,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa,MAAM;IACnB,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC;IACV,QAAQ,OAAO,CAAC,eAAe,GAAG,SAAS,KAAK,EAAE;IAClD,YAAY,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,SAAS,CAAC;IACV,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,EAAE,SAAS,QAAQ,EAAE;IAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACjC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB;IACA,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,EAAE,SAAS,MAAM,EAAE;IAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1C,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC;IACA,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB;IACA,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,EAAE,SAAS,KAAK,EAAE;IAC7B,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,aAAa,EAAE,WAAW;IAC9B,IAAI,MAAM,EAAE,IAAI;IAChB,CAAC,CAAC;AACF;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE;IAC1C,IAAI,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;IAC3C,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtD,QAAQ,MAAM,CAAC,GAAG,GAAG,mDAAmD,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxE,KAAK;AACL;IACA,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC1B;IACA,IAAI,IAAI,YAAY,GAAG,WAAW,YAAY,wBAAwB,IAAI,WAAW,YAAY,iBAAiB,CAAC;AACnH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;IAC/C,YAAY,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,gBAAgB,EAAE;IAC/B,YAAY,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IAC/B,gBAAgB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC;IACxD,aAAa;AACb;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAChC,gBAAgB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;IAC1D,aAAa;AACb;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IAC/B,gBAAgB,MAAM,CAAC,KAAK,GAAG;IAC/B,oBAAoB,KAAK,EAAE,MAAM,CAAC,KAAK;IACvC,oBAAoB,MAAM,EAAE,MAAM,CAAC,MAAM;IACzC,iBAAiB,CAAC;IAClB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAChC,gBAAgB,MAAM,CAAC,MAAM,GAAG;IAChC,oBAAoB,KAAK,EAAE,MAAM,CAAC,KAAK;IACvC,oBAAoB,MAAM,EAAE,MAAM,CAAC,MAAM;IACzC,iBAAiB,CAAC;IAClB,aAAa;AACb;IACA,YAAY,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IACtD,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;AACxD;IACA,YAAY,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;IACpD,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;IACtD,SAAS;AACT;IACA;IACA,QAAQ,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AACtC;IACA;IACA;IACA;IACA,QAAQ,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC;IACA;IACA;IACA;IACA;IACA,QAAQ,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;AACrD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACpD;IACA;IACA;IACA,QAAQ,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;IAChE,YAAY,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC3C,SAAS;AAGT;IACA,QAAQ,SAAS,cAAc,CAAC,IAAI,EAAE;IACtC,YAAY,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;IACnD,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,iBAAiB,EAAE;IACnC,gBAAgB,OAAO,UAAU,CAAC,WAAW;IAC7C,oBAAoB,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACxB,aAAa;AACb;IACA,YAAY,kBAAkB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;AACvE;IACA,YAAY,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE;IACpD,gBAAgB,aAAa,GAAG,IAAI,CAAC;IACrC,aAAa;AACb;IACA;IACA,YAAY,IAAI,IAAI,GAAG,aAAa,GAAG,EAAE,EAAE;IAC3C,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,EAAE;IAC/C;IACA;IACA,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAa;AACb;IACA,YAAY,IAAI,CAAC,YAAY,EAAE;IAC/B,gBAAgB,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5E,aAAa;AACb;IACA,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;IACrC,gBAAgB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACnE,aAAa;AACb;IACA,YAAY,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,kBAAkB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;AACnE;IACA,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;IACjC,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC;IAClC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,QAAQ,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC7C;IACA,QAAQ,IAAI,kBAAkB,EAAE;IAChC,YAAY,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IACrD,SAAS;AAGT;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;IACxE,YAAY,IAAI,EAAE,WAAW;IAC7B,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B;IACA;IACA,QAAQ,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;IACrC,KAAK,CAAC;AACN;IACA,IAAI,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,iBAAiB,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,iBAAiB,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACxC,QAAQ,mBAAmB,EAAE,CAAC;IAC9B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;IACzC,SAAS;IACT,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;AACN;IACA,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C;IACA,IAAI,IAAI,YAAY,EAAE;IACtB,QAAQ,IAAI,WAAW,YAAY,wBAAwB,EAAE;IAC7D,YAAY,OAAO,GAAG,WAAW,CAAC;IAClC,YAAY,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACpC,SAAS,MAAM,IAAI,WAAW,YAAY,iBAAiB,EAAE;IAC7D,YAAY,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,YAAY,MAAM,GAAG,WAAW,CAAC;IACjC,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAChC;IACA,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpD,QAAQ,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC3B,QAAQ,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC9B,QAAQ,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AACjC;IACA,QAAQ,gBAAgB,GAAG,KAAK,CAAC;IACjC,QAAQ,KAAK,CAAC,gBAAgB,GAAG,WAAW;IAC5C,YAAY,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC;AACV;IACA,QAAQ,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACzC;IACA,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK;AACL;IACA,IAAI,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAClC,QAA4B,cAAc;AAC1C;IACA,IAAI,IAAI,UAAU,CAAC;AACnB;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;IACpB,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC;AACD;IACA;AACA;IACA;IACA;AACA;IACA;AACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,iBAAiB,CAAC,mBAAmB,EAAE,YAAY,EAAE;AAC9D;IACA,IAAI,IAAI,oBAAoB,GAAG,qFAAqF,CAAC;AACrH;IACA,IAAI,CAAC,SAAS,IAAI,EAAE;IACpB,QAAQ,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IAC9C,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,IAAI,EAAE;IACnB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IAC3C,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,OAAOA,cAAM,KAAK,WAAW,EAAE;IAC3C,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQA,cAAM,CAAC,SAAS,GAAG;IAC3B,YAAY,SAAS,EAAE,oBAAoB;IAC3C,YAAY,YAAY,EAAE,WAAW,EAAE;IACvC,SAAS,CAAC;AACV;IACA,QAAQ,IAAI,CAACA,cAAM,CAAC,OAAO,EAAE;IAC7B,YAAYA,cAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IAChC,SAAS;AACT;IACA,QAAQ,IAAI,OAAOA,cAAM,CAAC,OAAO,CAAC,GAAG,KAAK,WAAW,IAAI,OAAOA,cAAM,CAAC,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE;IACtG,YAAYA,cAAM,CAAC,OAAO,CAAC,KAAK,GAAGA,cAAM,CAAC,OAAO,CAAC,GAAG,GAAGA,cAAM,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW;IACzF,gBAAgB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IAC7C;IACA,YAAY,IAAI,CAAC,QAAQ,GAAG;IAC5B,gBAAgB,eAAe,EAAE;IACjC,oBAAoB,WAAW,EAAE,WAAW;IAC5C,wBAAwB,OAAO,EAAE,CAAC;IAClC,qBAAqB;IACrB,iBAAiB;IACjB,aAAa,CAAC;AACd;IACA,YAAY,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,gBAAgB,GAAG,WAAW;IACrG,gBAAgB,IAAI,GAAG,GAAG;IAC1B,oBAAoB,UAAU,EAAE,WAAW;IAC3C,wBAAwB,OAAO,GAAG,CAAC;IACnC,qBAAqB;IACrB,oBAAoB,IAAI,EAAE,WAAW,EAAE;IACvC,oBAAoB,KAAK,EAAE,WAAW,EAAE;IACxC,oBAAoB,SAAS,EAAE,WAAW,EAAE;IAC5C,oBAAoB,SAAS,EAAE,WAAW;IAC1C,wBAAwB,OAAO,EAAE,CAAC;IAClC,qBAAqB;IACrB,oBAAoB,KAAK,EAAE,EAAE;IAC7B,iBAAiB,CAAC;IAClB,gBAAgB,OAAO,GAAG,CAAC;IAC3B,aAAa,CAAC;AACd;IACA,YAAY,IAAI,CAAC,gBAAgB,GAAG,WAAW,EAAE,CAAC;IAClD,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IAC7C;IACA,YAAY,IAAI,CAAC,QAAQ,GAAG;IAC5B,gBAAgB,QAAQ,EAAE,OAAO;IACjC,gBAAgB,IAAI,EAAE,EAAE;IACxB,gBAAgB,IAAI,EAAE,EAAE;IACxB,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IAC3C;IACA,YAAY,IAAI,CAAC,MAAM,GAAG;IAC1B,gBAAgB,KAAK,EAAE,CAAC;IACxB,gBAAgB,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC;IACd,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;IACxC;IACA,YAAY,IAAI,CAAC,GAAG,GAAG;IACvB,gBAAgB,eAAe,EAAE,WAAW;IAC5C,oBAAoB,OAAO,EAAE,CAAC;IAC9B,iBAAiB;IACjB,gBAAgB,eAAe,EAAE,WAAW;IAC5C,oBAAoB,OAAO,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa,CAAC;IACd,SAAS;AACT;IACA;IACA,QAAQ,IAAI,CAAC,MAAM,GAAGA,cAAM,CAAC;IAC7B,KAAK,EAAE,OAAOA,cAAM,KAAK,WAAW,GAAGA,cAAM,GAAG,IAAI,CAAC,CAAC;AACtD;IACA;AACA;IACA,IAAI,YAAY,GAAG,YAAY,IAAI,qBAAqB,CAAC;AACzD;IACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,mBAAmB,GAAG,KAAK,CAAC;AACpC;IACA,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IAClC,IAAI,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AACpE;IACA,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AACtB;IACA;IACA,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA;IACA;AACA;IACA;IACA,IAAI,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3C;IACA,IAAI,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IAC7C,QAAQ,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE;IACvD;IACA,YAAY,YAAY,GAAG,kBAAkB,CAAC;IAC9C,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE;IACpD;IACA,YAAY,YAAY,GAAG,eAAe,CAAC;IAC3C,SAAS;IACT,KAAK;AACL;IACA;IACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB;IACA,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACxE;IACA,QAAQ,GAAG,GAAG,SAAS,CAAC;IACxB,KAAK;AACL;IACA,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,SAAS,CAAC,YAAY,KAAK,WAAW,EAAE;IAC3F,QAAQ,IAAI,OAAO,SAAS,CAAC,kBAAkB,KAAK,WAAW,EAAE;IACjE,YAAY,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,kBAAkB,CAAC;IAClE,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,SAAS,CAAC,eAAe,KAAK,WAAW,EAAE;IAC9D,YAAY,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC;IAC/D,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;IACA,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;IACxF,QAAQ,WAAW,GAAG,iBAAiB,CAAC;IACxC,KAAK;AACL;IACA;IACA,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;IAC5C;IACA,QAAQ,IAAI,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;IAC/D,YAAY,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;IACpD,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;IACzD,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC;IACd,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB;IACA,IAAI,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IAC7C,QAAQ,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IAC5C,KAAK,MAAM,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE;IAC1D,QAAQ,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;IAClD,KAAK;AACL;IACA,IAAI,SAAS,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE;IAC3C,QAAQ,IAAI,WAAW,IAAI,OAAO,EAAE;IACpC,YAAY,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IACvC,SAAS,MAAM,IAAI,cAAc,IAAI,OAAO,EAAE;IAC9C,YAAY,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;IAC1C,SAAS,MAAM;IACf,YAAY,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IACvC,SAAS;IACT,KAAK;AACL;IACA,IAAI,IAAI,CAAC,kBAAkB,GAAG,WAAW;IACzC,QAAQ,kBAAkB,EAAE,CAAC;IAC7B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,kBAAkB,GAAG;IAClC,QAAQ,IAAI,mBAAmB,EAAE;IACjC,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACzC;IACA,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC;IAC/B,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAC;IAC3B,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;IACvC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IAC/B,gBAAgB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;IAClC,aAAa;AACb;IACA,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;IACzC,gBAAgB,UAAU,GAAG,KAAK,CAAC;IACnC,aAAa,MAAM;IACnB;IACA,gBAAgB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,aAAa;IACb,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IACnD,YAAY,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IACrD,SAAS,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE;IACrC,YAAY,MAAM,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1F;IACA,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC;IAC3B,YAAY,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;IAC1D,gBAAgB,MAAM,GAAG,CAAC,CAAC;IAC3B,aAAa;IACb,YAAY,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;IAC1D,gBAAgB,MAAM,GAAG,CAAC,CAAC;IAC3B,aAAa;IACb,YAAY,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;IAC1D,gBAAgB,MAAM,GAAG,CAAC,CAAC;IAC3B,aAAa;IACb,YAAY,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,EAAE,EAAE;IAC3D,gBAAgB,MAAM,GAAG,CAAC,CAAC;IAC3B,aAAa;IACb,YAAY,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IACzD,SAAS,MAAM;IACf,YAAY,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;IAC7C,YAAY,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;IAC/C,SAAS;AACT;IACA,QAAQ,IAAI,UAAU,IAAI,UAAU,YAAY,gBAAgB,EAAE;IAClE,YAAY,SAAS,CAAC,UAAU,CAAC,CAAC;IAClC,SAAS;AACT;IACA,QAAQ,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;IAC/C,YAAY,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3D,KAAK;AACL;IACA,IAAI,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE;IACnC,QAAQ,IAAI,mBAAmB,EAAE;IACjC,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAChC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,SAAS;AACT;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,SAAS;AACT;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,SAAS;AACT;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;IACvB,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;IACtD,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAClC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,EAAE;IACrD,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;IACvD,YAAY,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACvC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;IACxD,YAAY,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,SAAS;AACT;IACA,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD;IACA,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;IACzD,YAAY,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACrE,SAAS;IACT,KAAK;AACL;IACA,IAAI,SAAS,cAAc,GAAG;IAC9B,QAAQ,mBAAmB,GAAG,KAAK,CAAC;IACpC,QAAQ,IAAI,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;AACrD;IACA,QAAQ,IAAI,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IACrD,QAAQ,IAAI,gBAAgB,EAAE;IAC9B,YAAY,gBAAgB,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IAC5D,gBAAgB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC1C,aAAa,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;IACvC,gBAAgB,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,aAAa,CAAC,CAAC;IACf,SAAS;IAGT,QAAQ,mBAAmB,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;IACrD,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAEtB;IACb,SAAS,CAAC,CAAC;AACX;IACA;IACA;IACA;AACA;IACA,QAAQ,OAAO,gBAAgB,CAAC;IAChC,KAAK;AACL;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,iBAAiB,EAAE,CAAC;AAC5B;IACA,QAAQ,IAAI,cAAc,CAAC;AAC3B;IACA,QAAQ,IAAI,eAAe,IAAI,MAAM,EAAE;IACvC,YAAY,cAAc,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACpD,SAAS,MAAM,IAAI,kBAAkB,IAAI,MAAM,EAAE;IACjD,YAAY,cAAc,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACvD,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IACtC,YAAY,OAAO,CAAC,KAAK,CAAC,mHAAmH,CAAC,CAAC;IAC/I,SAAS;AACT;IACA,QAAQ,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAC5C;IACA,QAAQ,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACtD,YAAY,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IACtC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;IACnC,YAAY,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;AACpC;IACA,QAAQ,OAAO,WAAW,CAAC;IAC3B,KAAK;AACL;IACA,IAAI,SAAS,mBAAmB,GAAG;IACnC;IACA,QAAQ,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;IAC9C,YAAY,OAAO,CAAC,uBAAuB,GAAG,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IACzE,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,uBAAuB,CAAC;AAC5D;IACA,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;IACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAC3D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACjE,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACzC,SAAS;AACT;IACA,QAAQ,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAClC,QAAQ,mBAAmB,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;IACrD,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACvD,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,iBAAiB,CAAC,CAAC,MAAM,EAAE;IAC3B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,iBAAiB,EAAE,CAAC;AAChC;IACA,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChF;IACA,YAAY,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;IAC3C,gBAAgB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,aAAa;AACb;IACA,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,IAAI,CAAC,iBAAiB,EAAE;IAChC;IACA;IACA,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,CAAC;IACjF,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,WAAW,EAAE;IACxD,YAAY,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,SAAS,CAAC,CAAC;IACX,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAC5C,KAAK;AACL;IACA,IAAI,SAAS,QAAQ,CAAC,MAAM,EAAE;IAC9B,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpD;IACA,QAAQ,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpC;IACA,QAAQ,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACvC;IACA,QAAQ,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC3B,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB;IACA,QAAQ,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;IACxD,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;AAC3D;IACA,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;AACrB;IACA,QAAQ,OAAO,KAAK,CAAC;IACrB,KAAK;AACL;IACA,IAAI,IAAI,CAAC,aAAa,GAAG,SAAS,OAAO,EAAE;IAC3C,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,YAAY,MAAM,8BAA8B,CAAC;IACjD,SAAS;AACT;IACA,QAAQ,IAAI,EAAE,OAAO,YAAY,KAAK,CAAC,EAAE;IACzC,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS;AACT;IACA,QAAQ,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;IACzC,YAAY,IAAI,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9C;IACA,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACtD,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,iBAAiB,CAAC,CAAC,MAAM,EAAE;IAC3B,gBAAgB,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,gBAAgB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtC,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC;IACA,gBAAgB,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACzE,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,aAAa;AACb;IACA,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACtD,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,iBAAiB,CAAC,CAAC,MAAM,EAAE;IAC3B,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACpF,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,CAAC;IACzF,gBAAgB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3D;IACA,gBAAgB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IAC/F,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,aAAa;AACb;IACA,YAAY,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW;IACrC,QAAQ,MAAM,GAAG,EAAE,CAAC;IACpB,QAAQ,mBAAmB,GAAG,IAAI,CAAC;AACnC;IACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;IACtC,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;IACvD,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC;IACpC,aAAa,CAAC,CAAC;IACf,YAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACnC,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;IACnC,YAAY,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAC/C,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACzC,SAAS;AACT;IACA,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;IAC/B,YAAY,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IACtC,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC;IACA,QAAQ,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7D;IACA,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;IAC3B,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,YAAY,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS;IACT,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,SAAS,OAAO,EAAE;IAC/C,QAAQ,IAAI,OAAO,IAAI,EAAE,OAAO,YAAY,KAAK,CAAC,EAAE;IACpD,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS;AACT;IACA,QAAQ,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC;AACN;IACA,IAAI,SAAS,iBAAiB,CAAC,OAAO,EAAE;IACxC,QAAQ,MAAM,GAAG,EAAE,CAAC;IACpB,QAAQ,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC;AACjD;IACA;IACA,QAAQ,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;IACzC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACvD,oBAAoB,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,iBAAiB,CAAC,CAAC,MAAM,EAAE;IAC3B,gBAAgB,OAAO;IACvB,aAAa;AACb;IACA,YAAY,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAClC,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACpC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC;IACA,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAiE;IACjE,QAAQ,cAAc,GAAG,iBAAiB,CAAC;IAC3C,KAAK;IAOL,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,EAAE;IAC3D,IAAI,mBAAmB,GAAG,mBAAmB,IAAI,EAAE,CAAC;IACpD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA,IAAI,IAAI,KAAK,CAAC;IACd,IAAI,IAAI,aAAa,CAAC;AACtB;IACA,IAAI,OAAO,GAAG,OAAO,IAAI;IACzB,QAAQ,YAAY,EAAE,qBAAqB;IAC3C,QAAQ,QAAQ,EAAE,YAAY;IAC9B,QAAQ,KAAK,EAAE;IACf,YAAY,KAAK,EAAE,GAAG;IACtB,YAAY,MAAM,EAAE,GAAG;IACvB,SAAS;IACT,KAAK,CAAC;AACN;IACA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;IAChC,QAAQ,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;IACnC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,KAAK;AACL;IACA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;IAC9B,QAAQ,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;IAClC,KAAK;AACL;IACA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;IAC/B,QAAQ,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IACnC,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B;IACA,QAAQ,KAAK,GAAG,IAAI,iBAAiB,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC;AAC1G;IACA,QAAQ,IAAI,iBAAiB,EAAE,CAAC,MAAM,EAAE;IACxC,YAAY,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IAC9D,YAAY,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;IACrD,YAAY,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;IACvD,YAAY,KAAK,CAAC,kBAAkB,EAAE,CAAC;IACvC,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE;IAClF,YAAY,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,SAAS;AACT;IACA;IACA,QAAQ,aAAa,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IACjF,QAAQ,aAAa,CAAC,MAAM,EAAE,CAAC;IAC/B,KAAK,CAAC;AACN;IACA,IAAI,SAAS,iBAAiB,GAAG;IACjC,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;IACxB,QAAQ,mBAAmB,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;IACrD,YAAY,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;IAC/D,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,aAAa,CAAC,CAAC;IACf,SAAS,CAAC,CAAC;IACX,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,aAAa,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;IAC1C,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B;IACA,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3B;IACA,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACrC,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,aAAa,CAAC,KAAK,EAAE,CAAC;IAClC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,aAAa,CAAC,MAAM,EAAE,CAAC;IACnC,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAC9C,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,SAAS;AACT;IACA,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY,KAAK,CAAC,cAAc,EAAE,CAAC;IACnC,YAAY,KAAK,GAAG,IAAI,CAAC;IACzB,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;IACxC,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,YAAY,MAAM,8BAA8B,CAAC;IACjD,SAAS;AACT;IACA,QAAQ,IAAI,EAAE,OAAO,YAAY,KAAK,CAAC,EAAE;IACzC,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS;AACT;IACA,QAAQ,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C;IACA,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE;IACtC,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACrC;IACA,QAAQ,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE;IAClF,YAAY,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,SAAS;IACT,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,SAAS,OAAO,EAAE;IAC/C,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,OAAO,IAAI,EAAE,OAAO,YAAY,KAAK,CAAC,EAAE;IACpD,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS;AACT;IACA,QAAQ,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,KAAK,CAAC;IACrB,KAAK,CAAC;AACN;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;IACN,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACxD,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,SAAS,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE;IACxD,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,QAAQ,MAAM,sCAAsC,CAAC;IACrD,KAAK;AACL;IACA,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;IAC5C,QAAQ,MAAM,2CAA2C,CAAC;IAC1D,KAAK;AACL;IACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACzD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW;IACrC,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAChD,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,aAAa,GAAG,WAAW;IACpC,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;IAC3D,oBAAoB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzD;IACA,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACvD,wBAAwB,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,wBAAwB,OAAO;IAC/B,qBAAqB;AACrB;IACA,oBAAoB,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW;IACrC,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAChD,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,eAAe,GAAG,WAAW;IACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IACjD,gBAAgB,OAAO,EAAE,CAAC;IAC1B,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,QAAQ,EAAE;IACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,OAAO,EAAE;IAC5D,oBAAoB,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,mBAAmB,GAAG,WAAW;IAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9D,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IACrD,YAAY,IAAI;IAChB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IAClE,CAAC;AACD;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;IAC7C;AACA;IACA,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;IACxF;IACA,QAAQ,OAAO,CAAC,KAAK,CAAC,yHAAyH,CAAC,CAAC;IACjJ,KAAK;AACL;IACA,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC1B;IACA,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;IAC5C,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;AAO9C;IACA,IAAI,IAAI,QAAQ,CAAC;AACjB;IACA,IAAI,SAAS,YAAY,GAAG;IAC5B,QAAQ,OAAO,IAAI,cAAc,CAAC;IAClC,YAAY,KAAK,EAAE,SAAS,UAAU,EAAE;IACxC,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3D,gBAAgB,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5D,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjC,gBAAgB,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IACzC,gBAAgB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,gBAAgB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,gBAAgB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3C,gBAAgB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,gBAAgB,KAAK,CAAC,SAAS,GAAG,WAAW;IAC7C,oBAAoB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7C,oBAAoB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,oBAAoB,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,oBAAoB,IAAI,YAAY,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/D,oBAAoB,IAAI,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG;IAC/D,wBAAwB,IAAI,QAAQ,EAAE;IACtC,4BAA4B,aAAa,CAAC,WAAW,CAAC,CAAC;IACvD,4BAA4B,UAAU,CAAC,KAAK,EAAE,CAAC;IAC/C,yBAAyB;AACzB;IACA,wBAAwB,IAAI,KAAK,EAAE;IACnC,4BAA4B,KAAK,GAAG,KAAK,CAAC;IAC1C,4BAA4B,IAAI,MAAM,CAAC,qBAAqB,EAAE;IAC9D,gCAAgC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC/D,6BAA6B;IAC7B,yBAAyB;AACzB;IACA,wBAAwB,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,wBAAwB,IAAI,UAAU,CAAC,yBAAyB,CAAC,KAAK,KAAK,QAAQ,EAAE;IACrF,4BAA4B,IAAI;IAChC,gCAAgC,UAAU,CAAC,OAAO;IAClD,oCAAoC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IACvF,iCAAiC,CAAC;IAClC,6BAA6B,CAAC,OAAO,CAAC,EAAE,EAAE;IAC1C,yBAAyB;IACzB,qBAAqB,EAAE,YAAY,CAAC,CAAC;IACrC,iBAAiB,CAAC;IAClB,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA,IAAI,IAAI,MAAM,CAAC;AACf;IACA,IAAI,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;IAC5C,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE;IAC3C,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B;IACA;AACA;IACA,YAAY,KAAK;IACjB,gBAAgB,wDAAwD;IACxE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC/B,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,EAAE;IACtD,oBAAoB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,iBAAiB,CAAC,CAAC;IACnB,aAAa,CAAC,CAAC;IACf,YAAY,OAAO;IACnB,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,YAAY,WAAW,EAAE;IACjE,YAAY,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;IAC1C,gBAAgB,IAAI,EAAE,iBAAiB;IACvC,aAAa,CAAC,CAAC;IACf,YAAY,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1D,SAAS;AACT;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IAChC,YAAY,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC9D,SAAS;AACT;IACA,QAAQ,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/C;IACA,QAAQ,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,IAAI,wDAAwD,CAAC,CAAC;IAC/G,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IAC3D,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;IACxC,gBAAgB,MAAM,CAAC,WAAW,CAAC;IACnC,oBAAoB,KAAK,EAAE,MAAM,CAAC,KAAK;IACvC,oBAAoB,MAAM,EAAE,MAAM,CAAC,MAAM;IACzC,oBAAoB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;IACnD,oBAAoB,WAAW,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;IACvD,oBAAoB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IAC7C,iBAAiB,CAAC,CAAC;AACnB;IACA,gBAAgB,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC;IACzD,oBAAoB,KAAK,EAAE,SAAS,KAAK,EAAE;IAC3C,wBAAwB,IAAI,QAAQ,EAAE;IACtC,4BAA4B,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAClF,4BAA4B,OAAO;IACnC,yBAAyB;AACzB;IACA,wBAAwB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,qBAAqB;IACrB,iBAAiB,CAAC,CAAC,CAAC;IACpB,aAAa,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;IACrC,gBAAgB,IAAI,CAAC,QAAQ,EAAE;IAC/B,oBAAoB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,iBAAiB;IACjB,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK;AACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,cAAc,GAAG,EAAE,CAAC;IAC5B,QAAQ,QAAQ,GAAG,KAAK,CAAC;IACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,QAAQ,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/B;IACA,QAAQ,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;IACvD,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC;IAClC,SAAS;IACT,KAAK,CAAC;AACN;IACA,IAAI,IAAI,QAAQ,CAAC;AACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;IAC5B,QAAQ,QAAQ,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW;IAC7B,QAAQ,QAAQ,GAAG,KAAK,CAAC;IACzB,KAAK,CAAC;AACN;IACA,IAAI,SAAS,SAAS,CAAC,QAAQ,EAAE;IACjC,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,QAAQ,EAAE,CAAC;IAC3B,aAAa;AACb;IACA,YAAY,OAAO;IACnB,SAAS;AACT;IACA;IACA,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IAC3D,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;IACrC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC;IACnC,gBAAgB,MAAM,GAAG,IAAI,CAAC;AAC9B;IACA,gBAAgB,IAAI,QAAQ,EAAE;IAC9B,oBAAoB,QAAQ,EAAE,CAAC;IAC/B,iBAAiB;IACjB,aAAa;IACb,SAAS,CAAC,CAAC;AACX;IACA,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK;AACL;IACA,IAAI,IAAI,cAAc,GAAG,EAAE,CAAC;AAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;IACnC,QAAQ,QAAQ,GAAG,IAAI,CAAC;AACxB;IACA,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC;AAC5B;IACA,QAAQ,SAAS,CAAC,WAAW;IAC7B,YAAY,QAAQ,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;IACrD,gBAAgB,IAAI,EAAE,YAAY;IAClC,aAAa,CAAC,CAAC;AACf;IACA,YAAY,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;AACN;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW;IAC/B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAW;IACxC,QAAQ,cAAc,GAAG,EAAE,CAAC;IAC5B,QAAQ,QAAQ,GAAG,KAAK,CAAC;IACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB;IACA;IACA,KAAK,CAAC;AACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;AACD;IACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACtC,IAAI,SAAS,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACxD;;;IC7jMe,MAAMC,eAAN,SAA8BvO,OAA9B,CAAsC;IACjD7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAK8C,QAAL,GAAgB,EAAhB;IACA,SAAKgW,QAAL,GAAgB3b,aAAW,CAACE,IAA5B;IACA,SAAK0b,WAAL,GAAmB,KAAnB;IACA,SAAKhf,kBAAL,GAA0B,CAA1B;IACA,SAAKif,iBAAL,GAAyB,IAAzB;IACAhZ,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,UAAjB,EAA6B,MAA7B;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,SAAKoe,MAAL;;IACA,SAAKjZ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,UAAtB,EAAkC,SAAlC;IACH;;IAEDyf,EAAAA,WAAW,CAACpW,QAAD,EAAWgW,QAAX,EAAqB;IAC5B,SAAKhW,QAAL,GAAgBA,QAAhB;;IAEA,QAAI3F,aAAW,CAACC,GAAZ,KAAoB0b,QAApB,IAAgC3b,aAAW,CAACE,IAAZ,KAAqByb,QAAzD,EAAmE;IAC/D,WAAKA,QAAL,GAAgBA,QAAhB;IACH;IACJ;;IAEY,MAAThf,SAAS,GAAG;IACZ,WAAO,KAAKif,WAAZ;IACH;;IAEa,MAAVI,UAAU,GAAG;IACb,WAAO,KAAKpf,kBAAZ;IACH;;IAEDqf,EAAAA,WAAW,GAAG;IACV,UAAMjkB,KAAK,GAAG,KAAK6K,MAAL,CAAY7K,KAA1B;IACA,UAAM+f,OAAO,GAAG;IACZ7S,MAAAA,IAAI,EAAE,OADM;IAEZgX,MAAAA,QAAQ,EAAE,wBAFE;IAGZC,MAAAA,WAAW,EAAGC,SAAD,IAAe;IACxBpkB,QAAAA,KAAK,CAACsE,GAAN,CAAU,UAAV,EAAsB,uBAAuB8f,SAA7C;IACH,OALW;IAMZC,MAAAA,WAAW,EAAE,CAAC,KAAKxZ,MAAL,CAAYpB,IAAZ,CAAiBzJ;IANnB,KAAhB;;IASA,QAAI;IACA,YAAMskB,MAAM,GAAG,KAAKzZ,MAAL,CAAYzH,KAAZ,CAAkBsR,aAAlB,CAAgC6P,aAAhC,CAA8C,EAA9C,CAAf;;IACA,UAAI,KAAK1Z,MAAL,CAAY1J,KAAZ,IAAqB,KAAK0J,MAAL,CAAY1J,KAAZ,CAAkBoe,+BAAvC,IACA,KAAK1U,MAAL,CAAY1J,KAAZ,CAAkBoe,+BAAlB,CAAkD+E,MADlD,IAEA,CAAC,KAAKzZ,MAAL,CAAY1J,KAAZ,CAAkBkf,gBAAlB,EAFD,IAGA,KAAKxV,MAAL,CAAY1J,KAAZ,CAAkBN,QAHlB,IAG8B,KAAKgK,MAAL,CAAYpB,IAAZ,CAAiB5I,QAHnD,EAG6D;IACzD,cAAM2jB,WAAW,GAAG,KAAK3Z,MAAL,CAAY1J,KAAZ,CAAkBoe,+BAAlB,CAAkD+E,MAAtE;;IACA,YAAIE,WAAW,CAACC,cAAZ,GAA6BpY,MAA7B,GAAsC,CAA1C,EAA6C;IACzC,gBAAMqY,UAAU,GAAGF,WAAW,CAACC,cAAZ,GAA6B,CAA7B,CAAnB;;IACA,cAAIC,UAAU,IAAIA,UAAU,CAACC,OAA7B,EAAsC;IAClCL,YAAAA,MAAM,CAACM,QAAP,CAAgBF,UAAhB;IACH;IACJ;IACJ;;IACD,WAAKG,QAAL,GAAgBC,WAAS,CAACR,MAAD,EAASvE,OAAT,CAAzB;IACH,KAfD,CAeE,OAAOrT,CAAP,EAAU;IACR1M,MAAAA,KAAK,CAACuE,KAAN,CAAY,UAAZ,EAAwBmI,CAAxB;IACA,WAAK+G,IAAL,CAAU9P,MAAM,CAACoB,iBAAjB;IACH;;IACD,QAAI,KAAK8f,QAAT,EAAmB;IACf,WAAKjB,WAAL,GAAmB,IAAnB;IACA,WAAKnQ,IAAL,CAAU9P,MAAM,CAACgB,SAAjB,EAA4B,IAA5B;IACA,WAAKkgB,QAAL,CAAcE,cAAd;IACA/kB,MAAAA,KAAK,CAACsE,GAAN,CAAU,UAAV,EAAsB,iBAAtB;IACA,WAAKuG,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACkB,WAAxB;IACA,WAAKgf,iBAAL,GAAyBtT,MAAM,CAACyU,WAAP,CAAmB,MAAM;IAC9C,aAAKpgB,kBAAL,IAA2B,CAA3B;IACA,aAAKiG,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACiB,kBAAxB,EAA4C,KAAKA,kBAAjD;IACH,OAHwB,EAGtB,IAHsB,CAAzB;IAIH;IACJ;;IAEDqgB,EAAAA,iBAAiB,GAAG;IAChB,QAAI,CAAC,KAAKJ,QAAN,IAAkB,CAAC,KAAKjB,WAA5B,EAAyC;IACrC;IACH;;IACD,SAAKiB,QAAL,CAAcK,aAAd,CAA4B,MAAM;IAC9B,WAAKra,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,UAAtB,EAAkC,gBAAlC;IACA,WAAKuG,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACmB,SAAxB;IACAuL,MAAAA,cAAc,CAAC,KAAKwU,QAAL,CAAcM,OAAd,EAAD,EAA0B,KAAKxX,QAA/B,EAAyC,KAAKgW,QAA9C,CAAd;;IACA,WAAKG,MAAL;;IACA,WAAKrQ,IAAL,CAAU9P,MAAM,CAACgB,SAAjB,EAA4B,KAA5B;IACH,KAND;IAOH;;IAEDmf,EAAAA,MAAM,GAAG;IACL,SAAKF,WAAL,GAAmB,KAAnB;IACA,SAAKhf,kBAAL,GAA0B,CAA1B;;IAEA,QAAI,KAAKigB,QAAT,EAAmB;IACf,WAAKA,QAAL,CAAcnf,OAAd;IACA,WAAKmf,QAAL,GAAgB,IAAhB;IACH;;IACD,SAAKlX,QAAL,GAAgB,IAAhB;;IACA,QAAI,KAAKkW,iBAAT,EAA4B;IACxBuB,MAAAA,aAAa,CAAC,KAAKvB,iBAAN,CAAb;IACH;;IACD,SAAKA,iBAAL,GAAyB,IAAzB;IACH;;IAtGgD;;ICHtC,MAAMwB,QAAN,CAAe;IAC1B/b,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMuT,MAAM,GAAGiH,QAAQ,CAAChH,gBAAT,EAAf;IACA,WAAO,IAAID,MAAJ,CAAWvT,MAAX,CAAP;IACH;;IAEsB,SAAhBwT,gBAAgB,GAAG;IACtB,WAAOqF,eAAP;IACH;;IARyB;;ICCf,MAAM4B,aAAN,CAAoB;IAC/Bhc,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAK0a,aAAL,GAAqB,IAAIC,MAAJ,CAAW3a,MAAM,CAACpB,IAAP,CAAYhI,OAAvB,CAArB;;IACA,SAAKgkB,kBAAL;;IACA5a,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,eAAjB,EAAkC,MAAlC;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,SAAK6f,aAAL,CAAmBG,WAAnB,CAA+B;IAACC,MAAAA,GAAG,EAAEriB,gBAAgB,CAACG;IAAvB,KAA/B;IACA,SAAK8hB,aAAL,CAAmBK,SAAnB;IACA,SAAKL,aAAL,GAAqB,IAArB;IACA,SAAK1a,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAuB,eAAvB,EAAuC,SAAvC;IACH;;IAEDmhB,EAAAA,kBAAkB,GAAG;IACjB,UAAM;IACFzlB,MAAAA,KADE;IAEF4T,MAAAA,MAAM,EAAE;IAAC7J,QAAAA;IAAD;IAFN,QAGF,KAAKc,MAHT;;IAKA,SAAK0a,aAAL,CAAmBM,SAAnB,GAAgCjb,KAAD,IAAW;IACtC,YAAMqR,GAAG,GAAGrR,KAAK,CAACiL,IAAlB;;IACA,cAAQoG,GAAG,CAAC0J,GAAZ;IACI,aAAKrjB,eAAe,CAACC,IAArB;IACIvC,UAAAA,KAAK,CAACsE,GAAN,CAAW,eAAX,EAA2B,YAA3B,EAAyChC,eAAe,CAACC,IAAzD;;IACA,cAAI,CAAC,KAAKsI,MAAL,CAAYiJ,MAAjB,EAAyB;IACrB,iBAAKjJ,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACM,IAAxB;IACH;;IACD,eAAK4G,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACE,iBAAxB;;IACA,eAAKiiB,SAAL;;IACA;;IACJ,aAAKxjB,eAAe,CAACS,SAArB;IACI/C,UAAAA,KAAK,CAACsE,GAAN,CAAW,eAAX,EAA2B,YAA3B,EAAyChC,eAAe,CAACS,SAAzD,EAAoEkZ,GAAG,CAAC8J,IAAxE;;IACA,cAAI,CAAC,KAAKlb,MAAL,CAAYwX,MAAZ,CAAmBtP,WAAxB,EAAqC;IACjC,iBAAKlI,MAAL,CAAYwX,MAAZ,CAAmBtP,WAAnB,GAAiCzE,GAAG,EAApC;IACH;;IACD,eAAKzD,MAAL,CAAYzH,KAAZ,CAAkBuX,eAAlB,CAAkC;IAC9BC,YAAAA,WAAW,EAAEqB,GAAG,CAAC8J;IADa,WAAlC;IAGA;;IACJ,aAAKzjB,eAAe,CAACQ,SAArB;IACI9C,UAAAA,KAAK,CAACsE,GAAN,CAAW,eAAX,EAA2B,YAA3B,EAAyChC,eAAe,CAACQ,SAAzD,EAAoEmZ,GAAG,CAAC8J,IAAxE;IACA,eAAKlb,MAAL,CAAY1J,KAAZ,IAAqB,KAAK0J,MAAL,CAAY1J,KAAZ,CAAkB+e,eAAlB,CAAkC;IACnDtF,YAAAA,WAAW,EAAEqB,GAAG,CAAC8J;IADkC,WAAlC,CAArB;IAGA;;IACJ,aAAKzjB,eAAe,CAACE,SAArB;IACIxC,UAAAA,KAAK,CAACsE,GAAN,CAAW,eAAX,EAA2B,YAA3B,EAAyChC,eAAe,CAACE,SAAzD,EAAqE,SAAQyZ,GAAG,CAACxC,CAAE,WAAUwC,GAAG,CAAC7K,CAAE,EAAnG;IACA,eAAKvG,MAAL,CAAYzH,KAAZ,CAAkBuX,eAAlB,CAAkC;IAC9BvP,YAAAA,KAAK,EAAE6Q,GAAG,CAACxC,CADmB;IAE9BjO,YAAAA,MAAM,EAAEyQ,GAAG,CAAC7K;IAFkB,WAAlC;IAIA,eAAKvG,MAAL,CAAYzH,KAAZ,CAAkB4Y,kBAAlB;IACA;;IACJ,aAAK1Z,eAAe,CAACK,SAArB;IACI3C,UAAAA,KAAK,CAACsE,GAAN,CAAW,eAAX,EAA2B,YAA3B,EAAyChC,eAAe,CAACK,SAAzD,EAAqE,YAAWsZ,GAAG,CAAC4D,QAAS,eAAc5D,GAAG,CAAC6D,UAAW,EAA1H;;IACA,cAAI,KAAKjV,MAAL,CAAY1J,KAAhB,EAAuB;IACnB,iBAAK0J,MAAL,CAAY1J,KAAZ,CAAkB+e,eAAlB,CAAkCjE,GAAlC;IACA,iBAAKpR,MAAL,CAAY1J,KAAZ,CAAkBqf,cAAlB,CAAiCvE,GAAjC;IACH;;IACD;;IACJ,aAAK3Z,eAAe,CAACG,MAArB;IACI;IACA,eAAKoI,MAAL,CAAYmb,YAAZ;IACA,eAAKnb,MAAL,CAAYzH,KAAZ,CAAkBX,MAAlB,CAAyBwZ,GAAzB;IACA,eAAKpR,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACS,UAAxB,EAAoC6X,GAAG,CAACC,EAAxC;IACA,eAAKrR,MAAL,CAAYob,WAAZ,CAAwB;IAACnU,YAAAA,GAAG,EAAE,IAAN;IAAYoK,YAAAA,EAAE,EAAED,GAAG,CAACC,EAApB;IAAwBgK,YAAAA,GAAG,EAAEjK,GAAG,CAACkK;IAAjC,WAAxB;;IACA,cAAI,CAAC,KAAKtb,MAAL,CAAYwX,MAAZ,CAAmBrP,UAAxB,EAAoC;IAChC,iBAAKnI,MAAL,CAAYwX,MAAZ,CAAmBrP,UAAnB,GAAgC1E,GAAG,EAAnC;IACA,iBAAKzD,MAAL,CAAYub,uBAAZ;IACH;;IACD;;IACJ,aAAK9jB,eAAe,CAACI,SAArB;IACI;IACA;IACA,cAAI,KAAKmI,MAAL,CAAY/G,OAAZ,IAAuB,KAAK+G,MAAL,CAAY1J,KAAvC,EAA8C;IAC1C,iBAAK0J,MAAL,CAAY1J,KAAZ,CAAkBD,IAAlB,CAAuB+a,GAAG,CAACjX,MAA3B,EAAmCiX,GAAG,CAACC,EAAvC;IACH;;IACD;;IACJ,aAAK5Z,eAAe,CAACU,SAArB;IACI,cAAIiZ,GAAG,CAACsH,OAAR,EAAiB;IACb,gBAAItH,GAAG,CAACsH,OAAJ,CAAY8C,OAAZ,CAAoBpjB,UAAU,CAACC,kBAA/B,MAAuD,CAAC,CAA5D,EAA+D;IAC3D,mBAAK2H,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACY,KAAxB,EAA+B6B,YAAY,CAACM,eAA5C;IACA,mBAAKmE,MAAL,CAAY4I,IAAZ,CAAiBrN,YAAY,CAACM,eAA9B;IACH;IACJ;;IACD;;IACJ;IACI,eAAKmE,MAAL,CAAYoR,GAAG,CAAC0J,GAAhB,KAAwB,KAAK9a,MAAL,CAAYoR,GAAG,CAAC0J,GAAhB,EAAqB1J,GAArB,CAAxB;IAlER;IAoEH,KAtED;IAuEH;;IAED6J,EAAAA,SAAS,GAAG;IACR,UAAMxH,GAAG,GAAG;IACRte,MAAAA,KAAK,EAAE,KAAK6K,MAAL,CAAYpB,IAAZ,CAAiBzJ,KADhB;IAER4B,MAAAA,gBAAgB,EAAE,KAAKiJ,MAAL,CAAYpB,IAAZ,CAAiB7H,gBAF3B;IAGRI,MAAAA,MAAM,EAAE,KAAK6I,MAAL,CAAYpB,IAAZ,CAAiBzH,MAHjB;IAIRpC,MAAAA,WAAW,EAAE,KAAKiL,MAAL,CAAYpB,IAAZ,CAAiB7J,WAJtB;IAKRyC,MAAAA,kBAAkB,EAAE,KAAKwI,MAAL,CAAYpB,IAAZ,CAAiBpH;IAL7B,KAAZ;IAOA,SAAKkjB,aAAL,CAAmBG,WAAnB,CAA+B;IAC3BC,MAAAA,GAAG,EAAEriB,gBAAgB,CAACf,IADK;IAE3B+b,MAAAA,GAAG,EAAEgI,IAAI,CAACC,SAAL,CAAejI,GAAf,CAFsB;IAG3BwB,MAAAA,UAAU,EAAG,KAAKjV,MAAL,CAAY1J,KAAZ,IAAqB,KAAK0J,MAAL,CAAY1J,KAAZ,CAAkByd,YAAlB,CAA+BkB,UAArD,IAAoE;IAHrD,KAA/B;IAKH;;IAED0G,EAAAA,WAAW,CAACC,WAAD,EAAcvK,EAAd,EAAkBwK,QAAlB,EAA4B;IAEnC,UAAM3G,OAAO,GAAG;IACZ7S,MAAAA,IAAI,EAAE/J,UAAU,CAACC,KADL;IAEZ8Y,MAAAA,EAAE,EAAE7Q,IAAI,CAACC,GAAL,CAAS4Q,EAAT,EAAa,CAAb,CAFQ;IAGZwK,MAAAA;IAHY,KAAhB,CAFmC;;IAQnC,SAAKnB,aAAL,CAAmBG,WAAnB,CAA+B;IAC3BC,MAAAA,GAAG,EAAEriB,gBAAgB,CAACT,MADK;IAE3BmC,MAAAA,MAAM,EAAEyhB,WAFmB;IAG3B1G,MAAAA;IAH2B,KAA/B,EAIG,CAAC0G,WAAW,CAACzhB,MAAb,CAJH;IAKH;;IAED2hB,EAAAA,WAAW,CAACF,WAAD,EAAcvK,EAAd,EAAkB;IACzB,QAAI,KAAKrR,MAAL,CAAYpB,IAAZ,CAAiBzH,MAAjB,IAA2B,CAAC,KAAK6I,MAAL,CAAYpB,IAAZ,CAAiBvH,YAAjD,EAA+D;IAC3D,WAAK0kB,mBAAL,CAAyBH,WAAzB,EAAsCvK,EAAtC;IACH,KAFD,MAEO,IAAI,KAAKrR,MAAL,CAAYpB,IAAZ,CAAiBxH,MAArB,EAA6B;IAChC,WAAK2kB,mBAAL,CAAyBH,WAAzB,EAAsCvK,EAAtC;IACH,KAFM,MAEA;IACH,WAAK2K,YAAL,CAAkBJ,WAAlB,EAA+BvK,EAA/B;IACH;IACJ,GApI8B;;;IAuI/B2K,EAAAA,YAAY,CAACJ,WAAD,EAAcvK,EAAd,EAAkB;IAC1B,UAAM6D,OAAO,GAAG;IACZ7S,MAAAA,IAAI,EAAE/J,UAAU,CAAChC,KADL;IAEZ+a,MAAAA,EAAE,EAAE7Q,IAAI,CAACC,GAAL,CAAS4Q,EAAT,EAAa,CAAb;IAFQ,KAAhB,CAD0B;;IAM1B,SAAKqJ,aAAL,CAAmBG,WAAnB,CAA+B;IAC3BC,MAAAA,GAAG,EAAEriB,gBAAgB,CAACT,MADK;IAE3BmC,MAAAA,MAAM,EAAEyhB,WAFmB;IAG3B1G,MAAAA;IAH2B,KAA/B,EAIG,CAAC0G,WAAW,CAACzhB,MAAb,CAJH;IAKH;;IAGD4hB,EAAAA,mBAAmB,CAACH,WAAD,EAAcvK,EAAd,EAAkB;IACjC;IACA,SAAKqJ,aAAL,CAAmBG,WAAnB,CAA+B;IAC3BC,MAAAA,GAAG,EAAEriB,gBAAgB,CAACC,WADK;IAE3ByB,MAAAA,MAAM,EAAEyhB,WAFmB;IAG3BvK,MAAAA,EAAE,EAAE7Q,IAAI,CAACC,GAAL,CAAS4Q,EAAT,EAAa,CAAb;IAHuB,KAA/B,EAIG,CAACuK,WAAW,CAACzhB,MAAb,CAJH;IAKH;;IAGD8hB,EAAAA,gBAAgB,CAACC,MAAD,EAAS;IACrB,SAAKxB,aAAL,CAAmBG,WAAnB,CAA+B;IAC3BC,MAAAA,GAAG,EAAEriB,gBAAgB,CAACI,YADK;IAE3B8E,MAAAA,GAAG,EAAEue,MAAM,CAACve,GAFe;IAG3B8G,MAAAA,KAAK,EAAEyX,MAAM,CAACzX;IAHa,KAA/B;IAKH;;IArK8B;;ICApB,MAAMoL,YAAN,SAA2BvF,OAA3B,CAAmC;IAC9C7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IAEA,SAAKmc,MAAL,GAAc,IAAd;IACA,SAAKC,cAAL,GAAsB,IAAtB;IACA,SAAKC,cAAL,GAAsB,IAAtB;IACA,SAAKf,KAAL,GAAa,CAAC,CAAd;IACA,SAAK3H,UAAL,GAAkB,EAAlB;IACA,SAAK2I,QAAL,GAAgB,KAAhB;IACA,SAAKC,YAAL;IACH;;IAED1hB,EAAAA,OAAO,GAAG;IACN,QAAI,KAAKshB,MAAT,EAAiB;IACb5B,MAAAA,aAAa,CAAC,KAAK4B,MAAN,CAAb;IACA,WAAKA,MAAL,GAAc,IAAd;IACH;;IACD,SAAKC,cAAL,GAAsB,IAAtB;IACA,SAAKC,cAAL,GAAsB,IAAtB;IACA,SAAKf,KAAL,GAAa,CAAC,CAAd;IACA,SAAK3H,UAAL,GAAkB,EAAlB;IACA,SAAK2I,QAAL,GAAgB,KAAhB;IACA,SAAKtT,GAAL;IACH;;IAEDwT,EAAAA,QAAQ,CAACjD,SAAD,EAAY;IAChB,QAAI,CAACA,SAAL,EAAgB;IACZ,aAAO,CAAC,CAAR;IACH;;IACD,QAAI,CAAC,KAAK6C,cAAV,EAA0B;IACtB,WAAKA,cAAL,GAAsB7C,SAAtB;IACA,WAAK8C,cAAL,GAAsB3Y,IAAI,CAACD,GAAL,EAAtB;IACA,WAAK6X,KAAL,GAAa,CAAC,CAAd;IACH,KAJD,MAIO;IACH,UAAI/B,SAAJ,EAAe;IACX,aAAK+B,KAAL,GAAc5X,IAAI,CAACD,GAAL,KAAa,KAAK4Y,cAAnB,IAAsC9C,SAAS,GAAG,KAAK6C,cAAvD,CAAb;IACH;IACJ;;IACD,WAAO,KAAKd,KAAZ;IACH;;IAEDmB,EAAAA,UAAU,GAAG;IACT,SAAKL,cAAL,GAAsB,IAAtB;IACA,SAAKC,cAAL,GAAsB,IAAtB;IACA,SAAKf,KAAL,GAAa,CAAC,CAAd;IACA,SAAKgB,QAAL,GAAgB,KAAhB;IACH,GAhD6C;;;IAmD9CC,EAAAA,YAAY,GAAG;IACX,SAAKvc,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,cAAtB,EAAuC,eAAvC;;IACA,QAAIijB,KAAK,GAAG,MAAM;IACd,UAAI1R,IAAJ;IACA,YAAMjW,WAAW,GAAG,KAAKiL,MAAL,CAAYpB,IAAZ,CAAiB7J,WAArC;;IACA,UAAI,KAAK4e,UAAL,CAAgBnS,MAApB,EAA4B;IACxB,YAAI,KAAK8a,QAAT,EAAmB;IACf;IACAtR,UAAAA,IAAI,GAAG,KAAK2I,UAAL,CAAgBqC,KAAhB,EAAP;;IACA,cAAIhL,IAAI,CAAC3I,IAAL,KAAc/J,UAAU,CAAChC,KAAzB,IAAkC0U,IAAI,CAAC2R,OAAL,CAAa,CAAb,MAAoB,CAA1D,EAA6D;IACzD,iBAAKC,gBAAL,CAAsB5R,IAAtB;IACH;;IACD,iBAAO,CAACA,IAAI,CAAC6Q,QAAN,IAAkB,KAAKlI,UAAL,CAAgBnS,MAAzC,EAAiD;IAC7CwJ,YAAAA,IAAI,GAAG,KAAK2I,UAAL,CAAgBqC,KAAhB,EAAP;;IACA,gBAAIhL,IAAI,CAAC3I,IAAL,KAAc/J,UAAU,CAAChC,KAAzB,IAAkC0U,IAAI,CAAC2R,OAAL,CAAa,CAAb,MAAoB,CAA1D,EAA6D;IACzD,mBAAKC,gBAAL,CAAsB5R,IAAtB;IACH;IACJ,WAXc;;;IAaf,cAAIA,IAAI,CAAC6Q,QAAT,EAAmB;IACf,iBAAKS,QAAL,GAAgB,KAAhB;;IACA,iBAAKM,gBAAL,CAAsB5R,IAAtB;IACH;IACJ,SAjBD,MAiBO;IACHA,UAAAA,IAAI,GAAG,KAAK2I,UAAL,CAAgB,CAAhB,CAAP;;IACA,cAAI,KAAK6I,QAAL,CAAcxR,IAAI,CAACqG,EAAnB,MAA2B,CAAC,CAAhC,EAAmC;IAC/B;IACA,iBAAKsC,UAAL,CAAgBqC,KAAhB;;IACA,iBAAK4G,gBAAL,CAAsB5R,IAAtB;IACH,WAJD,MAIO,IAAI,KAAKsQ,KAAL,GAAavmB,WAAW,GAAG,IAA/B,EAAqC;IACxC;IACA,iBAAK0nB,UAAL;IACA,iBAAKH,QAAL,GAAgB,IAAhB;IACH,WAJM,MAIA;IACH,mBAAO,KAAK3I,UAAL,CAAgBnS,MAAvB,EAA+B;IAC3BwJ,cAAAA,IAAI,GAAG,KAAK2I,UAAL,CAAgB,CAAhB,CAAP;;IAEA,kBAAI,KAAK6I,QAAL,CAAcxR,IAAI,CAACqG,EAAnB,IAAyBtc,WAA7B,EAA0C;IACtC;IACA,qBAAK4e,UAAL,CAAgBqC,KAAhB;;IACA,qBAAK4G,gBAAL,CAAsB5R,IAAtB;IACH,eAJD,MAIO;IACH;IACA;IACH;IACJ;IACJ;IACJ;IACJ;IACJ,KA/CD;;IAgDA0R,IAAAA,KAAK;;IACL,SAAKP,MAAL,GAAchC,WAAW,CAACuC,KAAD,EAAQ,EAAR,CAAzB;IACH;;IAEDG,EAAAA,SAAS,CAACF,OAAD,EAAUta,IAAV,EAAgBgP,EAAhB,EAAoBwK,QAApB,EAA8B;IACnC,UAAM7b,MAAM,GAAG,KAAKA,MAApB;IACA,QAAIkV,OAAO,GAAG;IACV7D,MAAAA,EAAE,EAAEA,EADM;IAEVhP,MAAAA,IAAI,EAAEA,IAFI;IAGVwZ,MAAAA,QAAQ,EAAE;IAHA,KAAd,CAFmC;;IAQnC,QAAI7b,MAAM,CAACpB,IAAP,CAAYzH,MAAZ,IAAsB,CAAC6I,MAAM,CAACpB,IAAP,CAAYvH,YAAvC,EAAqD;IACjD,UAAIgL,IAAI,KAAK/J,UAAU,CAACC,KAAxB,EAA+B;IAC3B2c,QAAAA,OAAO,CAAC2G,QAAR,GAAmBA,QAAnB;IACH;;IACD,WAAKiB,UAAL,CAAgBH,OAAhB,EAAyBzH,OAAzB;IACH,KALD,MAKO,IAAIlV,MAAM,CAACpB,IAAP,CAAYxH,MAAhB,EAAwB;IAC3B;IACA,UAAIiL,IAAI,KAAK/J,UAAU,CAACC,KAAxB,EAA+B;IAC3B2c,QAAAA,OAAO,CAAC2G,QAAR,GAAmBA,QAAnB;IACH;;IACD,WAAKiB,UAAL,CAAgBH,OAAhB,EAAyBzH,OAAzB;IACH,KANM,MAMA;IACH;IACA,UAAI7S,IAAI,KAAK/J,UAAU,CAACC,KAAxB,EAA+B;IAC3ByH,QAAAA,MAAM,CAAC0a,aAAP,IAAwB1a,MAAM,CAAC0a,aAAP,CAAqBiB,WAArB,CAAiCgB,OAAjC,EAA0CtL,EAA1C,EAA8CwK,QAA9C,CAAxB;IACH,OAFD,MAEO,IAAIxZ,IAAI,KAAK/J,UAAU,CAAChC,KAAxB,EAA+B;IAClC,YAAI0J,MAAM,CAACpB,IAAP,CAAY5I,QAAhB,EAA0B;IACtBgK,UAAAA,MAAM,CAAC0a,aAAP,IAAwB1a,MAAM,CAAC0a,aAAP,CAAqBoB,WAArB,CAAiCa,OAAjC,EAA0CtL,EAA1C,CAAxB;IACH;IACJ;IACJ;IACJ;;IAEDuL,EAAAA,gBAAgB,CAAC5R,IAAD,EAAO;IACnB,UAAMhL,MAAM,GAAG,KAAKA,MAApB;IACA,UAAM;IAAC+c,MAAAA,gBAAD;IAAmBC,MAAAA;IAAnB,QAAiChd,MAAvC;;IAEA,QAAIgL,IAAI,CAAC3I,IAAL,KAAc/J,UAAU,CAAChC,KAA7B,EAAoC;IAChC,UAAI0J,MAAM,CAACpB,IAAP,CAAY5I,QAAhB,EAA0B;IACtBgK,QAAAA,MAAM,CAAC0a,aAAP,IAAwB1a,MAAM,CAAC0a,aAAP,CAAqBoB,WAArB,CAAiC9Q,IAAI,CAAC2R,OAAtC,EAA+C3R,IAAI,CAACqG,EAApD,CAAxB;IACH;IACJ,KAJD,MAIO,IAAIrG,IAAI,CAAC3I,IAAL,KAAc/J,UAAU,CAACC,KAA7B,EAAoC;IACvC,UAAIyH,MAAM,CAACpB,IAAP,CAAYzH,MAAZ,IAAsB,CAAC6I,MAAM,CAACpB,IAAP,CAAYvH,YAAvC,EAAqD;IACjD0lB,QAAAA,gBAAgB,CAACpB,WAAjB,CAA6B3Q,IAAI,CAAC2R,OAAlC,EAA2C3R,IAAI,CAACqG,EAAhD,EAAoDrG,IAAI,CAAC6Q,QAAzD;IACH,OAFD,MAEO,IAAI7b,MAAM,CAACpB,IAAP,CAAYxH,MAAhB,EAAwB;IAC3B4lB,QAAAA,UAAU,CAACrB,WAAX,CAAuB3Q,IAAI,CAAC2R,OAA5B,EAAqC3R,IAAI,CAACqG,EAA1C,EAA8CrG,IAAI,CAAC6Q,QAAnD;IACH;IACJ;IACJ;;IAEDiB,EAAAA,UAAU,CAACH,OAAD,EAAUzH,OAAV,EAAmB;IACzB;IACA,QAAIA,OAAO,CAAC7S,IAAR,KAAiB/J,UAAU,CAAChC,KAAhC,EAAuC;IACnC,WAAKqd,UAAL,CAAgB9T,IAAhB,CAAqB;IACjBwR,QAAAA,EAAE,EAAE6D,OAAO,CAAC7D,EADK;IAEjBsL,QAAAA,OAAO,EAAEA,OAFQ;IAGjBta,QAAAA,IAAI,EAAE/J,UAAU,CAAChC;IAHA,OAArB;IAKH,KAND,MAMO,IAAI4e,OAAO,CAAC7S,IAAR,KAAiB/J,UAAU,CAACC,KAAhC,EAAuC;IAC1C,WAAKob,UAAL,CAAgB9T,IAAhB,CAAqB;IACjBwR,QAAAA,EAAE,EAAE6D,OAAO,CAAC7D,EADK;IAEjBsL,QAAAA,OAAO,EAAEA,OAFQ;IAGjBta,QAAAA,IAAI,EAAE/J,UAAU,CAACC,KAHA;IAIjBsjB,QAAAA,QAAQ,EAAE3G,OAAO,CAAC2G;IAJD,OAArB;IAMH;IACJ;;IAEDjjB,EAAAA,KAAK,GAAG;;IA3KsC;;ICCnC,MAAMqkB,SAAN,SAAwBpN,YAAxB,CAAqC;IAChDpR,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMA,MAAN;IACA,SAAKkd,KAAL,GAAa,KAAKC,SAAL,EAAb;IACA,SAAKC,QAAL,GAAgB,KAAKC,eAAL,CAAqB,KAAKH,KAA1B,CAAhB;IACAld,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,UAAjB,EAA6B,MAA7B;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,UAAMA,OAAN;IACA,SAAKqiB,KAAL,GAAa,IAAb;IACA,SAAKE,QAAL,GAAgB,IAAhB;IACA,SAAKpd,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,UAAtB,EAAkC,SAAlC;IACH;;IAEDwe,EAAAA,QAAQ,CAACjN,IAAD,EAAO;IACX,SAAKoS,QAAL,CAAcpS,IAAd;IACH;;IAEU,GAATmS,SAAS,GAAG;IACV,UAAM,CAAN;IACA,UAAMG,GAAG,GAAG,IAAIC,WAAJ,CAAgB,CAAhB,CAAZ;IACA,UAAMC,IAAI,GAAG,IAAI/a,UAAJ,CAAe6a,GAAf,CAAb;IACA,UAAMG,KAAK,GAAG,IAAIC,WAAJ,CAAgBJ,GAAhB,CAAd;IACA,UAAMtd,MAAM,GAAG,KAAKA,MAApB;;IAEA,WAAO,IAAP,EAAa;IACTwd,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,CAAV;IACA,YAAMG,CAAC,GAAG,MAAM,EAAhB;IACA,YAAMtb,IAAI,GAAGsb,CAAC,CAAC,CAAD,CAAd;IACAH,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,CAAD,CAAX;IACAH,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,CAAD,CAAX;IACAH,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,CAAD,CAAX;IACA,YAAMnc,MAAM,GAAGic,KAAK,CAAC,CAAD,CAApB;IACAD,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,EAAD,CAAX;IACAH,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,CAAD,CAAX;IACAH,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,CAAD,CAAX;IACA,UAAItM,EAAE,GAAGoM,KAAK,CAAC,CAAD,CAAd;;IACA,UAAIpM,EAAE,KAAK,QAAX,EAAqB;IACjBmM,QAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUG,CAAC,CAAC,EAAD,CAAX;IACAtM,QAAAA,EAAE,GAAGoM,KAAK,CAAC,CAAD,CAAV;IACH;;IACD,YAAMd,OAAO,GAAG,MAAMnb,MAAtB;;IACA,cAAQa,IAAR;IACI,aAAK7J,cAAc,CAAClC,KAApB;IACI,cAAI0J,MAAM,CAACpB,IAAP,CAAY5I,QAAhB,EAA0B;IACtBgK,YAAAA,MAAM,CAACob,WAAP,CAAmB;IACfwC,cAAAA,IAAI,EAAEjB,OAAO,CAAC3E;IADC,aAAnB;;IAGA,gBAAI2E,OAAO,CAAC3E,UAAR,GAAqB,CAAzB,EAA4B;IACxB,mBAAK6E,SAAL,CAAeF,OAAf,EAAwBrkB,UAAU,CAAChC,KAAnC,EAA0C+a,EAA1C;IACH;IACJ;;IACD;;IACJ,aAAK7Y,cAAc,CAACD,KAApB;IACI,cAAI,CAACyH,MAAM,CAACwX,MAAP,CAAcvP,UAAnB,EAA+B;IAC3BjI,YAAAA,MAAM,CAACwX,MAAP,CAAcvP,UAAd,GAA2BxE,GAAG,EAA9B;IACH;;IACD,cAAIzD,MAAM,CAACpB,IAAP,CAAY3I,QAAhB,EAA0B;IACtB+J,YAAAA,MAAM,CAACob,WAAP,CAAmB;IACfyC,cAAAA,IAAI,EAAElB,OAAO,CAAC3E;IADC,aAAnB;IAGA,kBAAM6D,QAAQ,GAAGc,OAAO,CAAC,CAAD,CAAP,IAAc,CAAd,KAAoB,CAArC;;IACA,gBAAIA,OAAO,CAAC3E,UAAR,GAAqB,CAAzB,EAA4B;IACxB,mBAAK6E,SAAL,CAAeF,OAAf,EAAwBrkB,UAAU,CAACC,KAAnC,EAA0C8Y,EAA1C,EAA8CwK,QAA9C;IACH;IACJ;;IACD;IAxBR;IA0BH;IACJ;;IAEDwB,EAAAA,eAAe,CAACH,KAAD,EAAQ;IACnB,QAAIY,IAAI,GAAGZ,KAAK,CAACa,IAAN,EAAX;IACA,QAAI5jB,MAAM,GAAG,IAAb;IACA,WAAQsK,KAAD,IAAW;IACd,UAAIuG,IAAI,GAAG,IAAIvI,UAAJ,CAAegC,KAAf,CAAX;;IACA,UAAItK,MAAJ,EAAY;IACR,YAAI6jB,OAAO,GAAG,IAAIvb,UAAJ,CAAetI,MAAM,CAACqH,MAAP,GAAgBwJ,IAAI,CAACxJ,MAApC,CAAd;IACAwc,QAAAA,OAAO,CAACC,GAAR,CAAY9jB,MAAZ;IACA6jB,QAAAA,OAAO,CAACC,GAAR,CAAYjT,IAAZ,EAAkB7Q,MAAM,CAACqH,MAAzB;IACAwJ,QAAAA,IAAI,GAAGgT,OAAP;IACA7jB,QAAAA,MAAM,GAAG,IAAT;IACH;;IACD,aAAO6Q,IAAI,CAACxJ,MAAL,IAAesc,IAAI,CAACrZ,KAA3B,EAAkC;IAC9B,YAAIyZ,MAAM,GAAGlT,IAAI,CAACD,KAAL,CAAW+S,IAAI,CAACrZ,KAAhB,CAAb;IACAqZ,QAAAA,IAAI,GAAGZ,KAAK,CAACa,IAAN,CAAW/S,IAAI,CAACD,KAAL,CAAW,CAAX,EAAc+S,IAAI,CAACrZ,KAAnB,CAAX,CAAP;IACAuG,QAAAA,IAAI,GAAGkT,MAAP;IACH;;IACD,UAAIlT,IAAI,CAACxJ,MAAL,GAAc,CAAlB,EAAqB;IACjBrH,QAAAA,MAAM,GAAG6Q,IAAT;IACH;IACJ,KAjBD;IAkBH;;IAEDpS,EAAAA,KAAK,GAAG;IACJ,SAAKskB,KAAL,IAAc,KAAKA,KAAL,CAAWiB,MAAX,CAAkB,IAAlB,CAAd;IACH;;IAjG+C;;ICArC,MAAMC,SAAN,SAAwBvO,YAAxB,CAAqC;IAChDpR,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMA,MAAN;IACAA,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,UAAjB,EAA6B,MAA7B;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,UAAMA,OAAN;IACA,SAAKmF,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,UAAtB,EAAkC,SAAlC;IACH;;IAEDwe,EAAAA,QAAQ,CAACjN,IAAD,EAAO;IACX,UAAMhL,MAAM,GAAG,KAAKA,MAApB;IACA,UAAMqe,EAAE,GAAG,IAAIC,QAAJ,CAAatT,IAAb,CAAX;IACA,UAAM3I,IAAI,GAAGgc,EAAE,CAACE,QAAH,CAAY,CAAZ,CAAb;IACA,UAAMlN,EAAE,GAAGgN,EAAE,CAACG,SAAH,CAAa,CAAb,EAAgB,KAAhB,CAAX;;IACA,YAAQnc,IAAR;IACI,WAAK/J,UAAU,CAAChC,KAAhB;IACI,YAAI0J,MAAM,CAACpB,IAAP,CAAY5I,QAAhB,EAA0B;IACtB,gBAAM2mB,OAAO,GAAG,IAAIla,UAAJ,CAAeuI,IAAf,EAAqB,CAArB,CAAhB;IACAhL,UAAAA,MAAM,CAACob,WAAP,CAAmB;IACfwC,YAAAA,IAAI,EAAEjB,OAAO,CAAC3E;IADC,WAAnB;;IAGA,cAAI2E,OAAO,CAAC3E,UAAR,GAAqB,CAAzB,EAA4B;IACxB,iBAAK6E,SAAL,CAAeF,OAAf,EAAwBta,IAAxB,EAA8BgP,EAA9B;IACH;IACJ;;IACD;;IACJ,WAAK/Y,UAAU,CAACC,KAAhB;IACI,YAAIyH,MAAM,CAACpB,IAAP,CAAY3I,QAAhB,EAA0B;IACtB,cAAI,CAAC+J,MAAM,CAACwX,MAAP,CAAcvP,UAAnB,EAA+B;IAC3BjI,YAAAA,MAAM,CAACwX,MAAP,CAAcvP,UAAd,GAA2BxE,GAAG,EAA9B;IACH;;IACD,cAAI4a,EAAE,CAACrG,UAAH,GAAgB,CAApB,EAAuB;IACnB,kBAAM2E,OAAO,GAAG,IAAIla,UAAJ,CAAeuI,IAAf,EAAqB,CAArB,CAAhB;IACA,kBAAMyT,QAAQ,GAAGJ,EAAE,CAACE,QAAH,CAAY,CAAZ,KAAkB,CAAlB,KAAwB,CAAzC;IACAve,YAAAA,MAAM,CAACob,WAAP,CAAmB;IACfyC,cAAAA,IAAI,EAAElB,OAAO,CAAC3E;IADC,aAAnB;;IAGA,gBAAI2E,OAAO,CAAC3E,UAAR,GAAqB,CAAzB,EAA4B;IACxB,mBAAK6E,SAAL,CAAeF,OAAf,EAAwBta,IAAxB,EAA8BgP,EAA9B,EAAkCoN,QAAlC;IACH;IACJ;IACJ;;IACD;IA5BR;IA8BH;;IA9C+C;;ICArC,MAAMC,KAAN,CAAY;IACvBjgB,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,UAAMuT,MAAM,GAAGmL,KAAK,CAAClL,gBAAN,CAAuBxT,MAAM,CAACpB,IAAP,CAAY1H,SAAnC,CAAf;IACA,WAAO,IAAIqc,MAAJ,CAAWvT,MAAX,CAAP;IACH;;IAEsB,SAAhBwT,gBAAgB,CAACnR,IAAD,EAAO;IAC1B,QAAIA,IAAI,KAAK1N,UAAU,CAACE,GAAxB,EAA6B;IACzB,aAAOupB,SAAP;IACH,KAFD,MAEO,IAAI/b,IAAI,KAAK1N,UAAU,CAACC,GAAxB,EAA6B;IAChC,aAAOqoB,SAAP;IACH;IACJ;;IAZsB;;ICCZ,MAAM0B,gBAAN,SAA+BrU,OAA/B,CAAuC;IAClD7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAK4e,OAAL,GAAe,KAAf;IACA,SAAKC,UAAL,GAAkB,KAAlB;IACA,SAAKjoB,OAAL,GAAe,IAAf;IACA,SAAKkoB,WAAL;IACA9e,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,WAAjB,EAA8B,MAA9B;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,QAAI,KAAKjE,OAAT,EAAkB;IACd,WAAKA,OAAL,CAAagC,KAAb;IACA,WAAKhC,OAAL,GAAe,IAAf;IACH;;IAED,SAAKgoB,OAAL,GAAe,KAAf;IACA,SAAKC,UAAL,GAAkB,KAAlB;IACA,SAAK7V,GAAL;IACA,SAAKhJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,SAAnC;IACH;;IAEDqlB,EAAAA,WAAW,GAAG;IACV,UAAMC,KAAK,GAAG,IAAd;;IACA,SAAKnoB,OAAL,GAAe,IAAIooB,YAAJ,CAAiB;IAC5BzN,MAAAA,MAAM,CAACnX,UAAD,EAAa;IACf2kB,QAAAA,KAAK,CAACE,YAAN,CAAmB7kB,UAAnB;IACH,OAH2B;;IAI5BV,MAAAA,KAAK,CAACA,KAAD,EAAQ;IACTqlB,QAAAA,KAAK,CAACG,WAAN,CAAkBxlB,KAAlB;IACH;;IAN2B,KAAjB,CAAf;IAQH;;IAEDulB,EAAAA,YAAY,CAAC7kB,UAAD,EAAa;IACrB,QAAI,CAAC,KAAKykB,UAAV,EAAsB;IAClB,WAAK7e,MAAL,CAAYzH,KAAZ,CAAkBuX,eAAlB,CAAkC;IAC9BvP,QAAAA,KAAK,EAAEnG,UAAU,CAAC+kB,UADY;IAE9Bxe,QAAAA,MAAM,EAAEvG,UAAU,CAACglB;IAFW,OAAlC;IAIA,WAAKpf,MAAL,CAAYzH,KAAZ,CAAkB4Y,kBAAlB;IACA,WAAK0N,UAAL,GAAkB,IAAlB;IACH;;IAED,QAAI,CAAC,KAAK7e,MAAL,CAAYwX,MAAZ,CAAmBrP,UAAxB,EAAoC;IAChC,WAAKnI,MAAL,CAAYwX,MAAZ,CAAmBrP,UAAnB,GAAgC1E,GAAG,EAAnC;IACA,WAAKzD,MAAL,CAAYub,uBAAZ;IACH;;IAED,SAAKvb,MAAL,CAAYmb,YAAZ;IACA,SAAKnb,MAAL,CAAYzH,KAAZ,CAAkBX,MAAlB,CAAyB;IACrBwC,MAAAA;IADqB,KAAzB;IAIA,SAAK4F,MAAL,CAAYob,WAAZ,CAAwB;IAACnU,MAAAA,GAAG,EAAE,IAAN;IAAYoK,MAAAA,EAAE,EAAE,CAAhB;IAAmBgK,MAAAA,GAAG,EAAE,KAAKrb,MAAL,CAAYuX,KAAZ,CAAkB+D;IAA1C,KAAxB,EApBqB;;IAuBrBhY,IAAAA,UAAU,CAAC,YAAY;IACnB,UAAIlJ,UAAU,CAACxB,KAAf,EAAsB;IAClBwB,QAAAA,UAAU,CAACxB,KAAX;IACH,OAFD,MAEO;IACHwB,QAAAA,UAAU,CAACS,OAAX;IACH;IACJ,KANS,EAMP,GANO,CAAV;IAOH;;IAEDqkB,EAAAA,WAAW,CAACxlB,KAAD,EAAQ;IACf,SAAKsG,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,0BAAnC,EAA+DC,KAA/D;IACH;;IAEDiiB,EAAAA,WAAW,CAACgB,OAAD,EAAUtL,EAAV,EAAcoN,QAAd,EAAwB;IAC/B;IACA,QAAI,CAAC,KAAKG,OAAV,EAAmB;IACf,UAAIH,QAAQ,IAAI9B,OAAO,CAAC,CAAD,CAAP,KAAe,CAA/B,EAAkC;IAC9B,cAAM0C,UAAU,GAAI1C,OAAO,CAAC,CAAD,CAAP,GAAa,IAAjC;IACA,aAAK3c,MAAL,CAAYzH,KAAZ,CAAkBuX,eAAlB,CAAkC;IAC9BC,UAAAA,WAAW,EAAEsP;IADiB,SAAlC,EAF8B;;IAO9B,YAAIA,UAAU,KAAK/iB,cAAc,CAACE,IAAlC,EAAwC;IACpC,eAAKoM,IAAL,CAAUrN,YAAY,CAACI,uBAAvB;IACA;IACH;;IACD,YAAI,CAAC,KAAKqE,MAAL,CAAYwX,MAAZ,CAAmBtP,WAAxB,EAAqC;IACjC,eAAKlI,MAAL,CAAYwX,MAAZ,CAAmBtP,WAAnB,GAAiCzE,GAAG,EAApC;IACH;;IAED,cAAMyY,MAAM,GAAGjW,2BAA2B,CAAC0W,OAAO,CAAC5R,KAAR,CAAc,CAAd,CAAD,CAA1C;IACA,aAAKnU,OAAL,CAAa0oB,SAAb,CAAuBpD,MAAvB;IACA,aAAK0C,OAAL,GAAe,IAAf;IACH;IACJ,KApBD,MAoBO;IACH,YAAMW,KAAK,GAAG,IAAIC,iBAAJ,CAAsB;IAChCxU,QAAAA,IAAI,EAAE2R,OAAO,CAAC5R,KAAR,CAAc,CAAd,CAD0B;IAEhCwO,QAAAA,SAAS,EAAElI,EAFqB;IAGhChP,QAAAA,IAAI,EAAEoc,QAAQ,GAAG/gB,kBAAkB,CAACC,GAAtB,GAA4BD,kBAAkB,CAACE;IAH7B,OAAtB,CAAd;IAKA,WAAKhH,OAAL,CAAaoB,MAAb,CAAoBunB,KAApB;IACH;IACJ;;IArGiD;;ICLtD,MAAME,QAAQ,GAAG;IACbppB,EAAAA,IAAI,EAAE,IADO;IAEb6C,EAAAA,KAAK,EAAE,IAFM;IAGb5C,EAAAA,KAAK,EAAE,EAHM;IAIb6C,EAAAA,IAAI,EAAE,EAJO;IAKb/C,EAAAA,UAAU,EAAE,IALC;IAMbiD,EAAAA,OAAO,EAAE,IANI;IAOblD,EAAAA,UAAU,EAAE,IAPC;IAQbupB,EAAAA,cAAc,EAAE,MARH;IASbnpB,EAAAA,MAAM,EAAE,IATK;IAUbopB,EAAAA,UAAU,EAAE;IAVC,CAAjB;AAaA,gBAAe1f,MAAM,CAACyE,IAAP,CAAY+a,QAAZ,EAAsBG,MAAtB,CAA6B,CAACC,KAAD,EAAQliB,GAAR,KAAgB;IACxDkiB,EAAAA,KAAK,CAACliB,GAAD,CAAL,GAAc;AAClB,8CAA8CA,GAAI;AAClD,MAAM8hB,QAAQ,CAAC9hB,GAAD,CAAR,GAAiB,0DAAyD8hB,QAAQ,CAAC9hB,GAAD,CAAM,gBAAxF,GAA0G,EAAG;AACnH,CAHI;IAIA,SAAOkiB,KAAP;IACH,CANc,EAMZ,EANY,CAAf;;ACXA,oBAAe,CAAC7f,MAAD,EAAS8f,OAAT,KAAqB;IAEhC,MAAI9f,MAAM,CAACpB,IAAP,CAAYnI,UAAZ,IAA0BuJ,MAAM,CAACpB,IAAP,CAAYpI,eAA1C,EAA2D;IACvDwJ,IAAAA,MAAM,CAACK,UAAP,CAAkBiJ,SAAlB,CAA4BC,GAA5B,CAAgC,mCAAhC;IACH,GAFD,MAGK;IACDvJ,IAAAA,MAAM,CAACK,UAAP,CAAkBiJ,SAAlB,CAA4BC,GAA5B,CAAgC,yBAAhC;IACH;;IACD,QAAM2L,OAAO,GAAGlV,MAAM,CAACpB,IAAvB;IACA,QAAM1I,WAAW,GAAGgf,OAAO,CAAChf,WAA5B;IAGA8J,EAAAA,MAAM,CAACK,UAAP,CAAkB0f,kBAAlB,CACI,WADJ,EAEK;AACT,cAAc7K,OAAO,CAACve,UAAR,GAAsB,8DAA6Due,OAAO,CAACve,UAAW,WAAtG,GAAmH,EAAG;AACpI;AACA,kBAAkBkpB,KAAK,CAACxmB,OAAQ;AAChC,kBAAkB6b,OAAO,CAACxe,WAAR,GAAuB,uCAAsCwe,OAAO,CAACxe,WAAY,QAAjF,GAA2F,EAAG;AAChH;AACA,cAAcwe,OAAO,CAACze,UAAR,IAAsBP,WAAW,CAACG,IAAlC,GAA0C,wCAA1C,GAAoF,EAAG;AACrG,cAAc6e,OAAO,CAACze,UAAR,GAAsB;AACpC;AACA;AACA;AACA,8BAA8Bye,OAAO,CAACrf,aAAR,GAAyB,6DAAzB,GAAwF,EAAG;AACzH;AACA;AACA,+BAA+BK,WAAW,CAACI,KAAZ,GAAqB;AACpD;AACA,uCAAuCupB,KAAK,CAACvpB,KAAM;AACnD,uCAAuCupB,KAAK,CAAC1mB,IAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAX+B,GAWE,EAAG;AACpC,+BAA+BjD,WAAW,CAACG,IAAZ,GAAoB,uDAAsDwpB,KAAK,CAACxpB,IAAK,8DAA6DwpB,KAAK,CAAC3mB,KAAM,QAA9J,GAAwK,EAAG;AAC1M,+BAA+BhD,WAAW,CAACE,UAAZ,GAA0B,6DAA4DypB,KAAK,CAACzpB,UAAW,QAAvG,GAAiH,EAAG;AACnJ,+BAA+BF,WAAW,CAACK,MAAZ,GAAsB,0DAAyDspB,KAAK,CAACtpB,MAAO,oEAAmEspB,KAAK,CAACF,UAAW,QAAhL,GAA0L,EAAG;AAC5N,+BAA+BzpB,WAAW,CAACC,UAAZ,GAA0B,6DAA4D0pB,KAAK,CAAC1pB,UAAW,wEAAuE0pB,KAAK,CAACH,cAAe,QAAnM,GAA6M,EAAG;AAC/O;AACA;AACA;AACA,aA1Bc,GA0BE,EAAG;AACnB;AACA,SArCI;IAwCAzf,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,SAA/B,EAA0C;IACtCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,mBAAhC;IAD+B,GAA1C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,UAA/B,EAA2C;IACvCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,oBAAhC;IADgC,GAA3C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,OAA/B,EAAwC;IACpCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,iBAAhC;IAD6B,GAAxC;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,UAA/B,EAA2C;IACvCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,qBAAhC;IADgC,GAA3C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,QAA/B,EAAyC;IACrCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,kBAAhC;IAD8B,GAAzC;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,WAA/B,EAA4C;IACxCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,qBAAhC;IADiC,GAA5C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,aAA/B,EAA8C;IAC1Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,uBAAhC;IADmC,GAA9C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,aAA/B,EAA8C;IAC1Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,uBAAhC;IADmC,GAA9C;IAKA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,SAA/B,EAA0C;IACtCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,mBAAhC;IAD+B,GAA1C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,kBAA/B,EAAmD;IAC/Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,8BAAhC;IADwC,GAAnD;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,kBAA/B,EAAmD;IAC/Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,8BAAhC;IADwC,GAAnD;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,cAA/B,EAA+C;IAC3Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,yBAAhC;IADoC,GAA/C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,eAA/B,EAAgD;IAC5Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,gCAAhC;IADqC,GAAhD;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,WAA/B,EAA4C;IACxCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,uBAAhC;IADiC,GAA5C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,YAA/B,EAA6C;IACzCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,sBAAhC;IADkC,GAA7C;IAKA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,aAA/B,EAA8C;IAC1Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,uBAAhC;IADmC,GAA9C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,iBAA/B,EAAkD;IAC9Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,4BAAhC;IADuC,GAAlD;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,SAA/B,EAA0C;IACtCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,mBAAhC;IAD+B,GAA1C;IAGA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,aAA/B,EAA8C;IAC1Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,wBAAhC;IADmC,GAA9C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,aAA/B,EAA8C;IAC1Crb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,uBAAhC;IADmC,GAA9C;IAIA/f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,QAA/B,EAAyC;IACrCrb,IAAAA,KAAK,EAAEzE,MAAM,CAACK,UAAP,CAAkB2f,aAAlB,CAAgC,kBAAhC;IAD8B,GAAzC;IAGH,CAxID;;ACEA,sBAAe,CAAChgB,MAAD,EAAS8f,OAAT,KAAqB;IAChC,QAAM;IACF/W,IAAAA,MAAM,EAAE;IAAC7J,MAAAA;IAAD;IADN,MAEFc,MAFJ;IAIA,QAAMigB,MAAM,GAAGjd,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;IACAgd,EAAAA,MAAM,CAACC,YAAP,CAAoB,aAApB,EAAmC,MAAnC;IACAD,EAAAA,MAAM,CAACC,YAAP,CAAoB,UAApB,EAAgC,CAAC,CAAjC;IACAD,EAAAA,MAAM,CAAC5d,IAAP,GAAc,WAAd;IACA4d,EAAAA,MAAM,CAACjV,IAAP,GAAc,aAAd;IAEAzG,EAAAA,QAAQ,CAAC0b,MAAD,EAAS;IACbE,IAAAA,OAAO,EAAE,OADI;IAEbjQ,IAAAA,QAAQ,EAAE,UAFG;IAGbC,IAAAA,GAAG,EAAE,GAHQ;IAIbC,IAAAA,IAAI,EAAE,GAJO;IAKbzP,IAAAA,MAAM,EAAE,MALK;IAMbJ,IAAAA,KAAK,EAAE,MANM;IAOb6f,IAAAA,QAAQ,EAAE,QAPG;IAQbC,IAAAA,aAAa,EAAE,MARF;IASbC,IAAAA,MAAM,EAAE;IATK,GAAT,CAAR;IAYA,MAAI1W,WAAW,GAAG5J,MAAM,CAACO,KAAzB;IACA,MAAIoJ,YAAY,GAAG3J,MAAM,CAACW,MAA1B;IAEAzB,EAAAA,KAAK,CAAC+gB,MAAD,EAAS,MAAT,EAAiB,MAAM;IACxB/gB,IAAAA,KAAK,CAAC+gB,MAAM,CAACM,eAAP,CAAuBC,WAAxB,EAAqC,QAArC,EAA+C,MAAM;IACtD,UAAIxgB,MAAM,CAACO,KAAP,KAAiBqJ,WAAjB,IAAgC5J,MAAM,CAACW,MAAP,KAAkBgJ,YAAtD,EAAoE;IAChEC,QAAAA,WAAW,GAAG5J,MAAM,CAACO,KAArB;IACAoJ,QAAAA,YAAY,GAAG3J,MAAM,CAACW,MAAtB;IACAX,QAAAA,MAAM,CAAC4I,IAAP,CAAY9P,MAAM,CAACyB,MAAnB;IACH;IACJ,KANI,CAAL;IAOH,GARI,CAAL;IASAyF,EAAAA,MAAM,CAACK,UAAP,CAAkBgQ,WAAlB,CAA8B4P,MAA9B;IAEAjgB,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAAC+B,OAAjB,EAA0B,MAAM;IAC5BmF,IAAAA,MAAM,CAACK,UAAP,CAAkBwQ,WAAlB,CAA8BoP,MAA9B;IACH,GAFD;;IAIA,WAASQ,eAAT,CAAyBC,UAAzB,EAAqC;IACjC,QAAIA,UAAU,KAAK,CAAnB,EAAsB;IAClBnc,MAAAA,QAAQ,CAACub,OAAO,CAACa,SAAT,EAAoB,SAApB,EAA+B,MAA/B,CAAR;IACApc,MAAAA,QAAQ,CAACub,OAAO,CAACc,UAAT,EAAqB,SAArB,EAAgC,MAAhC,CAAR;IACArc,MAAAA,QAAQ,CAACub,OAAO,CAACe,aAAT,EAAwB,KAAxB,EAAgC,GAAE,EAAG,IAArC,CAAR;IACH,KAJD,MAIO;IACH,UAAIf,OAAO,CAACe,aAAR,IAAyBf,OAAO,CAACgB,YAArC,EAAmD;IAC/C,cAAMC,WAAW,GAAGnc,QAAQ,CAACkb,OAAO,CAACgB,YAAT,EAAuB,QAAvB,CAAR,IAA4C,EAAhE;IACA,cAAME,YAAY,GAAGpc,QAAQ,CAACkb,OAAO,CAACe,aAAT,EAAwB,QAAxB,CAA7B;IACA,cAAM1Q,GAAG,GAAG4Q,WAAW,GAAG,CAACA,WAAW,GAAGC,YAAf,IAA+BN,UAA7C,GAA0DM,YAAtE;IACAzc,QAAAA,QAAQ,CAACub,OAAO,CAACe,aAAT,EAAwB,KAAxB,EAAgC,GAAE1Q,GAAI,IAAtC,CAAR;IACA5L,QAAAA,QAAQ,CAACub,OAAO,CAACa,SAAT,EAAoB,SAApB,EAA+B,MAA/B,CAAR;IACApc,QAAAA,QAAQ,CAACub,OAAO,CAACc,UAAT,EAAqB,SAArB,EAAgC,MAAhC,CAAR;IACH;IACJ;;IACDd,IAAAA,OAAO,CAACmB,gBAAR,KAA6BnB,OAAO,CAACmB,gBAAR,CAAyBC,SAAzB,GAAqCC,QAAQ,CAACT,UAAU,GAAG,GAAd,CAA1E;IACH;;IAED1gB,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAAC8B,YAAjB,EAA+B,MAAM;IACjC6lB,IAAAA,eAAe,CAACzgB,MAAM,CAACyV,MAAR,CAAf;IACH,GAFD;IAIAzV,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACO,OAAjB,EAA2Bgd,IAAD,IAAU;IAChC9R,IAAAA,QAAQ,CAACub,OAAO,CAACsB,QAAT,EAAmB,SAAnB,EAA8B/K,IAAI,GAAG,MAAH,GAAY,MAA9C,CAAR;IACA9R,IAAAA,QAAQ,CAACub,OAAO,CAACuB,OAAT,EAAkB,SAAlB,EAA6B,MAA7B,CAAR;;IAEA,QAAIhL,IAAJ,EAAU;IACN9R,MAAAA,QAAQ,CAACub,OAAO,CAACwB,QAAT,EAAmB,SAAnB,EAA8B,MAA9B,CAAR;IACH;IACJ,GAPD;;IASA,MAAI;IACA,UAAM3Y,gBAAgB,GAAG,MAAM;IAC3BpE,MAAAA,QAAQ,CAACub,OAAO,CAACyB,eAAT,EAA0B,SAA1B,EAAqCvhB,MAAM,CAAC7J,UAAP,GAAoB,MAApB,GAA6B,MAAlE,CAAR;IACAoO,MAAAA,QAAQ,CAACub,OAAO,CAAC0B,WAAT,EAAsB,SAAtB,EAAiCxhB,MAAM,CAAC7J,UAAP,GAAoB,MAApB,GAA6B,MAA9D,CAAR,CAF2B;IAI9B,KAJD;;IAKA0S,IAAAA,UAAU,CAACC,EAAX,CAAc,QAAd,EAAwBH,gBAAxB;IACA3I,IAAAA,MAAM,CAAC+I,MAAP,CAAc9J,QAAd,CAAuBY,IAAvB,CAA4B,MAAM;IAC9BgJ,MAAAA,UAAU,CAACG,GAAX,CAAe,QAAf,EAAyBL,gBAAzB;IACH,KAFD;IAGH,GAVD,CAUE,OAAOjP,KAAP,EAAc;IAEf;;IAEDsG,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACgB,SAAjB,EAA4B,MAAM;IAC9ByK,IAAAA,QAAQ,CAACub,OAAO,CAAC2B,OAAT,EAAkB,SAAlB,EAA6BzhB,MAAM,CAAClG,SAAP,GAAmB,MAAnB,GAA4B,MAAzD,CAAR;IACAyK,IAAAA,QAAQ,CAACub,OAAO,CAAC4B,WAAT,EAAsB,SAAtB,EAAiC1hB,MAAM,CAAClG,SAAP,GAAmB,MAAnB,GAA4B,MAA7D,CAAR;IACH,GAHD,EAtFgC;;IA4FhCkG,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACiB,kBAAjB,EAAsCwf,SAAD,IAAe;IAEnD,GAFD;IAIAvZ,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACG,OAAjB,EAA2Bod,IAAD,IAAU;IAChC9R,IAAAA,QAAQ,CAACub,OAAO,CAAC6B,KAAT,EAAgB,SAAhB,EAA2BtL,IAAI,GAAG,MAAH,GAAY,MAA3C,CAAR;IACA9R,IAAAA,QAAQ,CAACub,OAAO,CAACwB,QAAT,EAAmB,SAAnB,EAA8BjL,IAAI,GAAG,MAAH,GAAY,OAA9C,CAAR;IACA9R,IAAAA,QAAQ,CAACub,OAAO,CAAC8B,MAAT,EAAiB,SAAjB,EAA4BvL,IAAI,GAAG,MAAH,GAAY,MAA5C,CAAR;IACA9R,IAAAA,QAAQ,CAACub,OAAO,CAAC+B,WAAT,EAAsB,SAAtB,EAAiCxL,IAAI,GAAG,MAAH,GAAY,MAAjD,CAAR;IACA9R,IAAAA,QAAQ,CAACub,OAAO,CAAC2B,OAAT,EAAkB,SAAlB,EAA6BpL,IAAI,GAAG,MAAH,GAAY,MAA7C,CAAR;IACA9R,IAAAA,QAAQ,CAACub,OAAO,CAAC0B,WAAT,EAAsB,SAAtB,EAAiCnL,IAAI,GAAG,MAAH,GAAY,MAAjD,CAAR,CANgC;;IAShC,QAAI,CAACA,IAAL,EAAW;IACPyJ,MAAAA,OAAO,CAACgC,MAAR,KAAmBhC,OAAO,CAACgC,MAAR,CAAeZ,SAAf,GAA2Bpa,OAAO,CAAC,EAAD,CAArD;IACH;IACJ,GAZD;IAeA9G,EAAAA,MAAM,CAAC8I,EAAP,CAAUhQ,MAAM,CAACf,IAAjB,EAAwBqf,IAAD,IAAU;IAC7B,UAAM2K,GAAG,GAAGjb,OAAO,CAACsQ,IAAD,CAAnB;IACA0I,IAAAA,OAAO,CAACgC,MAAR,KAAmBhC,OAAO,CAACgC,MAAR,CAAeZ,SAAf,GAA2Ba,GAA9C;IACH,GAHD;IAMH,CArHD;;ACJA,oBAAe,CAAC/hB,MAAD,EAAS8f,OAAT,KAAqB;IAEhC7f,EAAAA,MAAM,CAACC,cAAP,CAAsB4f,OAAtB,EAA+B,cAA/B,EAA+C;IAC3C3f,IAAAA,GAAG,EAAE,MAAM;IACP,aAAO2f,OAAO,CAACkC,SAAR,CAAkB1hB,qBAAlB,EAAP;IACH;IAH0C,GAA/C;IAMH,CARD;;ACEA,kBAAe,CAACN,MAAD,EAAS8f,OAAT,KAAqB;IAChC,QAAM;IACF/W,IAAAA,MAAM,EAAE;IAAC7J,MAAAA;IAAD,KADN;IAEF/J,IAAAA;IAFE,MAGF6K,MAHJ;;IAKA,WAASiiB,qBAAT,CAA+BliB,KAA/B,EAAsC;IAClC,UAAM;IAACmiB,MAAAA,MAAM,EAAEC,WAAT;IAAsBxhB,MAAAA,MAAM,EAAEogB;IAA9B,QAA6CjB,OAAO,CAACgB,YAAR,CAAqBxgB,qBAArB,EAAnD;IACA,UAAM;IAACK,MAAAA,MAAM,EAAEqgB;IAAT,QAAyBlB,OAAO,CAACe,aAAR,CAAsBvgB,qBAAtB,EAA/B;IACA,UAAMogB,UAAU,GACZxc,KAAK,CAACie,WAAW,GAAGpiB,KAAK,CAAC8O,CAApB,GAAwBmS,YAAY,GAAG,CAAxC,EAA2C,CAA3C,EAA8CD,WAAW,GAAGC,YAAY,GAAG,CAA3E,CAAL,IAAsFD,WAAW,GAAGC,YAApG,CADJ;IAEA,WAAON,UAAP;IACH,GAZ+B;;;IAehCxhB,EAAAA,KAAK,CAACwG,MAAD,EAAS,CAAC,OAAD,EAAU,aAAV,CAAT,EAAmC3F,KAAK,IAAI;IAC7C,QAAIA,KAAK,CAACqiB,YAAN,GAAqB5G,OAArB,CAA6Bxb,MAAM,CAACK,UAApC,IAAkD,CAAC,CAAvD,EAA0D;IACtDyf,MAAAA,OAAO,CAACuC,OAAR,GAAkB,IAAlB;IACH,KAFD,MAEO;IACHvC,MAAAA,OAAO,CAACuC,OAAR,GAAkB,KAAlB;IACH;IACJ,GANI,CAAL,CAfgC;;IAwBhCnjB,EAAAA,KAAK,CAACwG,MAAD,EAAS,mBAAT,EAA8B,MAAM;IACrCpC,IAAAA,UAAU,CAAC,MAAM;IACbtD,MAAAA,MAAM,CAACzF,MAAP;IACH,KAFS,EAEP,GAFO,CAAV;IAGH,GAJI,CAAL;IAOA2E,EAAAA,KAAK,CAAC4gB,OAAO,CAACkC,SAAT,EAAoB,OAApB,EAA8BngB,CAAD,IAAO;IACrCA,IAAAA,CAAC,CAACygB,eAAF;IACH,GAFI,CAAL;IAIApjB,EAAAA,KAAK,CAAC4gB,OAAO,CAAC8B,MAAT,EAAiB,OAAjB,EAA2B/f,CAAD,IAAO;IAClC7B,IAAAA,MAAM,CAAC9G,KAAP;IACH,GAFI,CAAL,CAnCgC;;IAuChCgG,EAAAA,KAAK,CAAC4gB,OAAO,CAAC6B,KAAT,EAAgB,OAAhB,EAA0B9f,CAAD,IAAO;IACjC7B,IAAAA,MAAM,CAAC3J,IAAP;IACH,GAFI,CAAL,CAvCgC;;IA4ChC6I,EAAAA,KAAK,CAAC4gB,OAAO,CAACwB,QAAT,EAAmB,OAAnB,EAA6Bzf,CAAD,IAAO;IACpC7B,IAAAA,MAAM,CAAC3J,IAAP;IACH,GAFI,CAAL;IAIA6I,EAAAA,KAAK,CAAC4gB,OAAO,CAACyC,OAAT,EAAkB,WAAlB,EAA+B,MAAM;IACtCzC,IAAAA,OAAO,CAAC0C,gBAAR,CAAyBlZ,SAAzB,CAAmCC,GAAnC,CAAuC,kCAAvC;IACH,GAFI,CAAL;IAIArK,EAAAA,KAAK,CAAC4gB,OAAO,CAACyC,OAAT,EAAkB,UAAlB,EAA8B,MAAM;IACrCzC,IAAAA,OAAO,CAAC0C,gBAAR,CAAyBlZ,SAAzB,CAAmCa,MAAnC,CAA0C,kCAA1C;IACH,GAFI,CAAL;IAIAjL,EAAAA,KAAK,CAAC4gB,OAAO,CAACa,SAAT,EAAoB,OAApB,EAA8B9e,CAAD,IAAO;IACrCA,IAAAA,CAAC,CAACygB,eAAF;IACA/d,IAAAA,QAAQ,CAACub,OAAO,CAACa,SAAT,EAAoB,SAApB,EAA+B,MAA/B,CAAR;IACApc,IAAAA,QAAQ,CAACub,OAAO,CAACc,UAAT,EAAqB,SAArB,EAAgC,OAAhC,CAAR;IACA5gB,IAAAA,MAAM,CAACyiB,UAAP,GAAoBziB,MAAM,CAACyV,MAA3B;IACAzV,IAAAA,MAAM,CAACyV,MAAP,GAAgB,CAAhB;IACH,GANI,CAAL;IAQAvW,EAAAA,KAAK,CAAC4gB,OAAO,CAACc,UAAT,EAAqB,OAArB,EAA+B/e,CAAD,IAAO;IACtCA,IAAAA,CAAC,CAACygB,eAAF;IACA/d,IAAAA,QAAQ,CAACub,OAAO,CAACa,SAAT,EAAoB,SAApB,EAA+B,OAA/B,CAAR;IACApc,IAAAA,QAAQ,CAACub,OAAO,CAACc,UAAT,EAAqB,SAArB,EAAgC,MAAhC,CAAR;IACA5gB,IAAAA,MAAM,CAACyV,MAAP,GAAgBzV,MAAM,CAACyiB,UAAP,IAAqB,GAArC;IACH,GALI,CAAL;IAOAvjB,EAAAA,KAAK,CAAC4gB,OAAO,CAAC+B,WAAT,EAAsB,OAAtB,EAAgChgB,CAAD,IAAO;IACvCA,IAAAA,CAAC,CAACygB,eAAF;IACAtiB,IAAAA,MAAM,CAACzH,KAAP,CAAanC,UAAb;IACH,GAHI,CAAL;IAKA8I,EAAAA,KAAK,CAAC4gB,OAAO,CAACgB,YAAT,EAAuB,OAAvB,EAAgC/gB,KAAK,IAAI;IAC1CA,IAAAA,KAAK,CAACuiB,eAAN;IACAtiB,IAAAA,MAAM,CAACyV,MAAP,GAAgBwM,qBAAqB,CAACliB,KAAD,CAArC;IACH,GAHI,CAAL;IAKAb,EAAAA,KAAK,CAAC4gB,OAAO,CAACe,aAAT,EAAwB,WAAxB,EAAqC,MAAM;IAC5Cf,IAAAA,OAAO,CAAC4C,eAAR,GAA0B,IAA1B;IACH,GAFI,CAAL;IAIAxjB,EAAAA,KAAK,CAAC4gB,OAAO,CAACe,aAAT,EAAwB,WAAxB,EAAqC9gB,KAAK,IAAI;IAC/C,QAAI+f,OAAO,CAAC4C,eAAZ,EAA6B;IACzB1iB,MAAAA,MAAM,CAACyV,MAAP,GAAgBwM,qBAAqB,CAACliB,KAAD,CAArC;IACH;IACJ,GAJI,CAAL;IAMAb,EAAAA,KAAK,CAAC8D,QAAD,EAAW,SAAX,EAAsB,MAAM;IAC7B,QAAI8c,OAAO,CAAC4C,eAAZ,EAA6B;IACzB5C,MAAAA,OAAO,CAAC4C,eAAR,GAA0B,KAA1B;IACH;IACJ,GAJI,CAAL;IAMAxjB,EAAAA,KAAK,CAAC4gB,OAAO,CAAC2B,OAAT,EAAkB,OAAlB,EAA4B5f,CAAD,IAAO;IACnCA,IAAAA,CAAC,CAACygB,eAAF;IACAtiB,IAAAA,MAAM,CAAClG,SAAP,GAAmB,IAAnB;IACH,GAHI,CAAL;IAKAoF,EAAAA,KAAK,CAAC4gB,OAAO,CAAC4B,WAAT,EAAsB,OAAtB,EAAgC7f,CAAD,IAAO;IACvCA,IAAAA,CAAC,CAACygB,eAAF;IACAtiB,IAAAA,MAAM,CAAClG,SAAP,GAAmB,KAAnB;IACH,GAHI,CAAL;IAKAoF,EAAAA,KAAK,CAAC4gB,OAAO,CAAC0B,WAAT,EAAsB,OAAtB,EAAgC3f,CAAD,IAAO;IACvCA,IAAAA,CAAC,CAACygB,eAAF;IACAtiB,IAAAA,MAAM,CAAC7J,UAAP,GAAoB,IAApB;IACH,GAHI,CAAL;IAKA+I,EAAAA,KAAK,CAAC4gB,OAAO,CAACyB,eAAT,EAA0B,OAA1B,EAAoC1f,CAAD,IAAO;IAC3CA,IAAAA,CAAC,CAACygB,eAAF;IACAtiB,IAAAA,MAAM,CAAC7J,UAAP,GAAoB,KAApB;IACH,GAHI,CAAL;;IAKA,MAAI6J,MAAM,CAACpB,IAAP,CAAYnI,UAAZ,IAA0BuJ,MAAM,CAACpB,IAAP,CAAYpI,eAA1C,EAA2D;IACvD;IACA0I,IAAAA,KAAK,CAACc,MAAM,CAACK,UAAR,EAAoB,WAApB,EAAiC,MAAM;IACxC,UAAI,CAACL,MAAM,CAAC7J,UAAZ,EAAwB;IACpBoO,QAAAA,QAAQ,CAACub,OAAO,CAACkC,SAAT,EAAoB,SAApB,EAA+B,OAA/B,CAAR;IACH;IACJ,KAJI,CAAL;IAMA9iB,IAAAA,KAAK,CAACc,MAAM,CAACK,UAAR,EAAoB,UAApB,EAAgC,MAAM;IACvCkE,MAAAA,QAAQ,CAACub,OAAO,CAACkC,SAAT,EAAoB,SAApB,EAA+B,MAA/B,CAAR;IACH,KAFI,CAAL;IAGH;IACJ,CAjID;;ICFA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;IACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;IACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;IACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;IAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;IACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,KAAK,MAAM;IACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,KAAK;IACL,GAAG,MAAM;IACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG;AACH;IACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;IACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;IACnC,GAAG,MAAM;IACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,GAAG;IACH;;;;;ICzBA;AAGA,kBAAe,CAAChiB,MAAD,EAAS8f,OAAT,KAAqB;IAChC,QAAM;IACF/W,IAAAA,MAAM,EAAE;IAAC7J,MAAAA;IAAD;IADN,MAEFc,MAFJ;IAIA,QAAM0E,IAAI,GAAG,EAAb;;IAEA,WAASie,SAAT,CAAmBhlB,GAAnB,EAAwBoC,KAAxB,EAA+B;IAC3B,QAAI2E,IAAI,CAAC/G,GAAD,CAAR,EAAe;IACX+G,MAAAA,IAAI,CAAC/G,GAAD,CAAJ,CAAUkC,IAAV,CAAeE,KAAf;IACH,KAFD,MAEO;IACH2E,MAAAA,IAAI,CAAC/G,GAAD,CAAJ,GAAY,CAACoC,KAAD,CAAZ;IACH;IACJ,GAb+B;;;IAgBhC4iB,EAAAA,SAAS,CAACvkB,OAAO,CAACC,GAAT,EAAc,MAAM;IACzB,QAAI2B,MAAM,CAAC7J,UAAX,EAAuB;IACnB6J,MAAAA,MAAM,CAAC7J,UAAP,GAAoB,KAApB;IACH;IACJ,GAJQ,CAAT,CAhBgC;;IAuBhCwsB,EAAAA,SAAS,CAACvkB,OAAO,CAACE,OAAT,EAAkB,MAAM;IAC7B0B,IAAAA,MAAM,CAACyV,MAAP,IAAiB,IAAjB;IACH,GAFQ,CAAT,CAvBgC;;IA4BhCkN,EAAAA,SAAS,CAACvkB,OAAO,CAACG,SAAT,EAAoB,MAAM;IAC/ByB,IAAAA,MAAM,CAACyV,MAAP,IAAiB,IAAjB;IACH,GAFQ,CAAT;IAIAvW,EAAAA,KAAK,CAACwG,MAAD,EAAS,SAAT,EAAoB3F,KAAK,IAAI;IAC9B,QAAI+f,OAAO,CAACuC,OAAZ,EAAqB;IACjB,YAAMO,GAAG,GAAG5f,QAAQ,CAAC6f,aAAT,CAAuBC,OAAvB,CAA+BC,WAA/B,EAAZ;IACA,YAAMC,QAAQ,GAAGhgB,QAAQ,CAAC6f,aAAT,CAAuBI,YAAvB,CAAoC,iBAApC,CAAjB;;IACA,UAAIL,GAAG,KAAK,OAAR,IAAmBA,GAAG,KAAK,UAA3B,IAAyCI,QAAQ,KAAK,EAAtD,IAA4DA,QAAQ,KAAK,MAA7E,EAAqF;IACjF,cAAMja,MAAM,GAAGrE,IAAI,CAAC3E,KAAK,CAACmjB,OAAP,CAAnB;;IACA,YAAIna,MAAJ,EAAY;IACRhJ,UAAAA,KAAK,CAACojB,cAAN;IACApa,UAAAA,MAAM,CAACjJ,OAAP,CAAeyK,EAAE,IAAIA,EAAE,EAAvB;IACH;IACJ;IACJ;IACJ,GAZI,CAAL;IAaH,CA7CD;;ICIe,MAAM6Y,OAAN,CAAc;IACzB3kB,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,SAAKA,MAAL,GAAcA,MAAd;IACAqjB,IAAAA,QAAQ,CAACrjB,MAAD,EAAS,IAAT,CAAR;IACAsjB,IAAAA,UAAQ,CAACtjB,MAAD,EAAS,IAAT,CAAR;IACAujB,IAAAA,QAAQ,CAACvjB,MAAD,EAAS,IAAT,CAAR;IACA+I,IAAAA,MAAM,CAAC/I,MAAD,EAAS,IAAT,CAAN;;IACA,QAAIA,MAAM,CAACpB,IAAP,CAAYxJ,MAAhB,EAAwB;IACpBouB,MAAAA,MAAM,CAACxjB,MAAD,EAAS,IAAT,CAAN;IACH;;IACD,SAAKA,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,SAAtB,EAAiC,MAAjC;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,QAAI,KAAKwmB,OAAT,EAAkB;IACd,WAAKrhB,MAAL,CAAYK,UAAZ,CAAuBwQ,WAAvB,CAAmC,KAAKwQ,OAAxC;IACH;;IACD,QAAI,KAAKD,QAAT,EAAmB;IACf,WAAKphB,MAAL,CAAYK,UAAZ,CAAuBwQ,WAAvB,CAAmC,KAAKuQ,QAAxC;IACH;;IACD,QAAI,KAAKY,SAAT,EAAoB;IAChB,WAAKhiB,MAAL,CAAYK,UAAZ,CAAuBwQ,WAAvB,CAAmC,KAAKmR,SAAxC;IACH;;IAED,QAAG,KAAKV,QAAR,EAAiB;IACb,WAAKthB,MAAL,CAAYK,UAAZ,CAAuBwQ,WAAvB,CAAmC,KAAKyQ,QAAxC;IACH;;IAED,SAAKthB,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,SAAtB,EAAiC,SAAjC;IACH;;IAEDgqB,EAAAA,QAAQ,GAAG;IACP,UAAMzjB,MAAM,GAAG,KAAKA,MAApB;IACAA,IAAAA,MAAM,CAACK,UAAP,CAAkBsE,KAAlB,CAAwB+e,OAAxB,GAAkC,KAAlC;IACA,UAAM9Z,WAAW,GAAG5J,MAAM,CAACO,KAA3B;IACA,UAAMoJ,YAAY,GAAG3J,MAAM,CAACW,MAA5B;IACA,UAAMoJ,WAAW,GAAGH,WAAW,GAAGD,YAAlC;IACA,UAAMga,WAAW,GAAG3jB,MAAM,CAACzH,KAAP,CAAasR,aAAb,CAA2BtJ,KAA/C;IACA,UAAMqjB,YAAY,GAAG5jB,MAAM,CAACzH,KAAP,CAAasR,aAAb,CAA2BlJ,MAAhD;IACA,UAAMkjB,WAAW,GAAGF,WAAW,GAAGC,YAAlC;;IACA,QAAI7Z,WAAW,GAAG8Z,WAAlB,EAA+B;IAC3B,YAAMH,OAAO,GAAG,CAAC9Z,WAAW,GAAGD,YAAY,GAAGka,WAA9B,IAA6C,CAA7D;IACA7jB,MAAAA,MAAM,CAACK,UAAP,CAAkBsE,KAAlB,CAAwB+e,OAAxB,GAAmC,KAAIA,OAAQ,IAA/C;IACH,KAHD,MAGO;IACH,YAAMA,OAAO,GAAG,CAAC/Z,YAAY,GAAGC,WAAW,GAAGia,WAA9B,IAA6C,CAA7D;IACA7jB,MAAAA,MAAM,CAACK,UAAP,CAAkBsE,KAAlB,CAAwB+e,OAAxB,GAAmC,GAAEA,OAAQ,MAA7C;IACH;IACJ;;IA/CwB;;;;;ACP7B,oBAAgB1jB,MAAD,IAAY;IAEvB,QAAM;IACFpB,IAAAA,IADE;IAEFzJ,IAAAA,KAFE;IAGF4T,IAAAA,MAAM,EAAE;IAAC7J,MAAAA;IAAD;IAHN,MAIFc,MAJJ;;IAOA,MAAIpB,IAAI,CAAChJ,yBAAT,EAAoC;IAChCsJ,IAAAA,KAAK,CAACc,MAAM,CAACK,UAAR,EAAoB,UAApB,EAAgC,MAAM;IACvCL,MAAAA,MAAM,CAAC7J,UAAP,GAAoB,CAAC6J,MAAM,CAAC7J,UAA5B;IACH,KAFI,CAAL;IAGH,GAbsB;;;IAiBvB+I,EAAAA,KAAK,CAAC8D,QAAD,EAAW,kBAAX,EAA+B,MAAM;IACtC,QAAIpE,IAAI,CAAC5H,eAAT,EAA0B;IACtB7B,MAAAA,KAAK,CAACsE,GAAN,CAAU,kBAAV,EAA8BuJ,QAAQ,CAAC8gB,eAAvC,EAAwD9jB,MAAM,CAAC+jB,0BAA/D;;IAEA,UAAI,cAAc/gB,QAAQ,CAAC8gB,eAA3B,EAA4C;IACxC,YAAI9jB,MAAM,CAAC+jB,0BAAX,EAAuC;IACnC/jB,UAAAA,MAAM,CAAC3J,IAAP;IACH;IACJ,OAJD,MAIO;IACH2J,QAAAA,MAAM,CAAC+jB,0BAAP,GAAoC/jB,MAAM,CAAC/G,OAA3C,CADG;;IAGH,YAAI+G,MAAM,CAAC/G,OAAX,EAAoB;IAChB+G,UAAAA,MAAM,CAAC9G,KAAP;IACH;IACJ;IACJ;IACJ,GAhBI,CAAL;IAkBAgG,EAAAA,KAAK,CAACwG,MAAD,EAAS,kBAAT,EAA6B,MAAM;IACpC;IACA,QAAI1F,MAAM,CAAClK,YAAP,KAAwB,IAAxB,IAAgC,cAAckN,QAAQ,CAAC8gB,eAA3D,EAA4E;IACxE9jB,MAAAA,MAAM,CAACgkB,cAAP;IACH;IACJ,GALI,CAAL;IAMH,CAzCD;;ICAA,MAAMC,KAAN,CAAU;IAEK,SAAJvsB,IAAI,GAAG;IACVusB,IAAAA,KAAG,CAACC,KAAJ,GAAY;IACRC,MAAAA,IAAI,EAAE,EADE;IAERje,MAAAA,IAAI,EAAE,EAFE;IAGRke,MAAAA,IAAI,EAAE,EAHE;IAIRC,MAAAA,IAAI,EAAE,EAJE;IAKRC,MAAAA,IAAI,EAAE,EALE;IAMRC,MAAAA,IAAI,EAAE,EANE;IAORC,MAAAA,IAAI,EAAE,EAPE;IAQRC,MAAAA,IAAI,EAAE,EARE;IASRC,MAAAA,IAAI,EAAE,EATE;IAURC,MAAAA,IAAI,EAAE,EAVE;IAWRC,MAAAA,IAAI,EAAE,EAXE;IAYRC,MAAAA,IAAI,EAAE,EAZE;IAaRC,MAAAA,IAAI,EAAE,EAbE;IAcRC,MAAAA,IAAI,EAAE,EAdE;IAeRC,MAAAA,IAAI,EAAE,EAfE;IAgBRC,MAAAA,IAAI,EAAE,EAhBE;IAiBRC,MAAAA,IAAI,EAAE,EAjBE;IAkBRC,MAAAA,IAAI,EAAE,EAlBE;IAmBRC,MAAAA,IAAI,EAAE,EAnBE;IAoBRC,MAAAA,IAAI,EAAE,EApBE;IAqBRC,MAAAA,IAAI,EAAE,EArBE;IAsBRC,MAAAA,IAAI,EAAE,EAtBE;IAuBRC,MAAAA,IAAI,EAAE,EAvBE;IAwBRC,MAAAA,IAAI,EAAE,EAxBE;IAyBRC,MAAAA,IAAI,EAAE,EAzBE;IA0BRC,MAAAA,IAAI,EAAE,EA1BE;IA2BRC,MAAAA,IAAI,EAAE,EA3BE;IA4BRC,MAAAA,IAAI,EAAE,EA5BE;IA6BRC,MAAAA,IAAI,EAAE,EA7BE;IA8BRC,MAAAA,IAAI,EAAE,EA9BE;IA+BRC,MAAAA,IAAI,EAAE,EA/BE;IAgCRC,MAAAA,IAAI,EAAE,EAhCE;IAiCRC,MAAAA,IAAI,EAAE,EAjCE;IAkCRC,MAAAA,IAAI,EAAE,EAlCE;IAmCRC,MAAAA,IAAI,EAAE,EAnCE;IAoCRC,MAAAA,IAAI,EAAE;IApCE,KAAZ;;IAuCA,SAAK,IAAI1nB,IAAT,IAAiBslB,KAAG,CAACC,KAArB,EAA4B;IACxB,UAAID,KAAG,CAACC,KAAJ,CAAUoC,cAAV,CAAyB3nB,IAAzB,CAAJ,EAAoC;IAChCslB,QAAAA,KAAG,CAACC,KAAJ,CAAUvlB,IAAV,IAAkB,CACdA,IAAI,CAAC+D,UAAL,CAAgB,CAAhB,CADc,EAEd/D,IAAI,CAAC+D,UAAL,CAAgB,CAAhB,CAFc,EAGd/D,IAAI,CAAC+D,UAAL,CAAgB,CAAhB,CAHc,EAId/D,IAAI,CAAC+D,UAAL,CAAgB,CAAhB,CAJc,CAAlB;IAMH;IACJ;;IAED,QAAI6jB,SAAS,GAAGtC,KAAG,CAACsC,SAAJ,GAAgB,EAAhC;IAEAA,IAAAA,SAAS,CAACC,IAAV,GAAiB,IAAI/jB,UAAJ,CAAe,CAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB,EACV,IADU;IAE5B,OAF4B,EAEvB,GAFuB,EAElB,GAFkB,EAEb,GAFa;IAG5B,QAH4B,EAGtB,IAHsB,EAGhB,IAHgB,EAGV,IAHU;IAI5B,QAJ4B,EAItB,IAJsB,EAIhB,IAJgB,EAIV,IAJU;IAAA,KAAf,CAAjB;IAOA8jB,IAAAA,SAAS,CAACE,WAAV,GAAwB,IAAIhkB,UAAJ,CAAe,CACnC,IADmC,EAC7B,IAD6B,EACvB,IADuB,EACjB,IADiB;IAEnC,QAFmC,EAE7B,IAF6B,EAEvB,IAFuB,EAEjB,IAFiB;IAAA,KAAf,CAAxB;IAKA8jB,IAAAA,SAAS,CAACG,IAAV,GAAiB,IAAIjkB,UAAJ,CAAe,CAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB,EACV,IADU;IAE5B,QAF4B,EAEtB,IAFsB,EAEhB,IAFgB,EAEV,IAFU;IAAA,KAAf,CAAjB;IAKA8jB,IAAAA,SAAS,CAACI,IAAV,GAAiBJ,SAAS,CAACK,IAAV,GAAiBL,SAAS,CAACG,IAA5C;IAEAH,IAAAA,SAAS,CAACM,IAAV,GAAiB,IAAIpkB,UAAJ,CAAe,CAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB,EACV,IADU;IAE5B,QAF4B,EAEtB,IAFsB,EAEhB,IAFgB,EAEV,IAFU;IAG5B,QAH4B,EAGtB,IAHsB,EAGhB,IAHgB,EAGV,IAHU;IAAA,KAAf,CAAjB;IAMA8jB,IAAAA,SAAS,CAACO,UAAV,GAAuB,IAAIrkB,UAAJ,CAAe,CAClC,IADkC,EAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB;IAElC,QAFkC,EAE5B,IAF4B,EAEtB,IAFsB,EAEhB,IAFgB;IAGlC,QAHkC,EAG5B,IAH4B,EAGtB,IAHsB,EAGhB,IAHgB;IAIlC,QAJkC,EAI5B,IAJ4B,EAItB,IAJsB,EAIhB,IAJgB;IAKlC,QALkC,EAK5B,IAL4B,EAKtB,IALsB,EAKhB,IALgB,EAMlC,IANkC,EAM5B,IAN4B,EAMtB,IANsB,EAMhB,IANgB,EAOlC,IAPkC,EAO5B,IAP4B,EAOtB,IAPsB,EAOhB,IAPgB,EAQlC,IARkC,EAQ5B,IAR4B,EAQtB,IARsB,EAQhB,IARgB,EASlC,IATkC,EAS5B,IAT4B,EAStB,IATsB,EAShB,IATgB,EASV,IATU;IAAA,KAAf,CAAvB;IAYA8jB,IAAAA,SAAS,CAACQ,UAAV,GAAuB,IAAItkB,UAAJ,CAAe,CAClC,IADkC,EAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB;IAElC,QAFkC,EAE5B,IAF4B,EAEtB,IAFsB,EAEhB,IAFgB;IAGlC,QAHkC,EAG5B,IAH4B,EAGtB,IAHsB,EAGhB,IAHgB;IAIlC,QAJkC,EAI5B,IAJ4B,EAItB,IAJsB,EAIhB,IAJgB;IAKlC,QALkC,EAK5B,IAL4B,EAKtB,IALsB,EAKhB,IALgB,EAMlC,IANkC,EAM5B,IAN4B,EAMtB,IANsB,EAMhB,IANgB,EAOlC,IAPkC,EAO5B,IAP4B,EAOtB,IAPsB,EAOhB,IAPgB,EAQlC,IARkC,EAQ5B,IAR4B,EAQtB,IARsB,EAQhB,IARgB,EASlC,IATkC,EAS5B,IAT4B,EAStB,IATsB,EAShB,IATgB,EASV,IATU;IAAA,KAAf,CAAvB;IAYA8jB,IAAAA,SAAS,CAACS,IAAV,GAAiB,IAAIvkB,UAAJ,CAAe,CAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB,EACV,IADU;IAE5B,QAF4B,EAEtB,IAFsB,EAEhB,IAFgB,EAEV,IAFU;IAG5B,QAH4B,EAGtB,IAHsB,EAGhB,IAHgB,EAGV,IAHU;IAI5B,QAJ4B,EAItB,IAJsB,EAIhB,IAJgB,EAIV,IAJU;IAK5B,QAL4B,EAKtB,IALsB,EAKhB,IALgB,EAKV,IALU;IAAA,KAAf,CAAjB,CAtGU;;IA+GV8jB,IAAAA,SAAS,CAACU,IAAV,GAAiB,IAAIxkB,UAAJ,CAAe,CAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB,EACV,IADU;IAE5B,QAF4B,EAEtB,IAFsB,EAEhB,IAFgB,EAEV,IAFU;IAAA,KAAf,CAAjB,CA/GU;;IAqHV8jB,IAAAA,SAAS,CAACW,IAAV,GAAiB,IAAIzkB,UAAJ,CAAe,CAC5B,IAD4B,EACtB,IADsB,EAChB,IADgB,EACV,IADU;IAE5B,QAF4B,EAEtB,IAFsB;IAG5B,QAH4B,EAGtB,IAHsB,EAGhB,IAHgB,EAGV,IAHU;IAI5B,QAJ4B,EAItB,IAJsB,CAAf,CAAjB;IAMH,GA7HK;;;IAgII,SAAH0kB,GAAG,CAAC9kB,IAAD,EAAO;IACb,QAAIgD,IAAI,GAAG,CAAX;IACA,QAAI6B,MAAM,GAAG,IAAb;IACA,QAAIkgB,KAAK,GAAG7nB,KAAK,CAAC8nB,SAAN,CAAgBtc,KAAhB,CAAsBuc,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC,CAAZ;IACA,QAAIC,UAAU,GAAGJ,KAAK,CAAC5lB,MAAvB;;IAEA,SAAK,IAAIyJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuc,UAApB,EAAgCvc,CAAC,EAAjC,EAAqC;IACjC5F,MAAAA,IAAI,IAAI+hB,KAAK,CAACnc,CAAD,CAAL,CAAS+M,UAAjB;IACH;;IAED9Q,IAAAA,MAAM,GAAG,IAAIzE,UAAJ,CAAe4C,IAAf,CAAT;IACA6B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAa7B,IAAI,KAAK,EAAV,GAAgB,IAA5B,CAXa;;IAYb6B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAa7B,IAAI,KAAK,EAAV,GAAgB,IAA5B;IACA6B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAa7B,IAAI,KAAK,CAAV,GAAe,IAA3B;IACA6B,IAAAA,MAAM,CAAC,CAAD,CAAN,GAAa7B,IAAD,GAAS,IAArB;IAEA6B,IAAAA,MAAM,CAAC+W,GAAP,CAAW5b,IAAX,EAAiB,CAAjB,EAhBa;;IAkBb,QAAIolB,MAAM,GAAG,CAAb;;IACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuc,UAApB,EAAgCvc,CAAC,EAAjC,EAAqC;IAAG;IACpC/D,MAAAA,MAAM,CAAC+W,GAAP,CAAWmJ,KAAK,CAACnc,CAAD,CAAhB,EAAqBwc,MAArB;IACAA,MAAAA,MAAM,IAAIL,KAAK,CAACnc,CAAD,CAAL,CAAS+M,UAAnB;IACH;;IAED,WAAO9Q,MAAP;IACH,GAzJK;;;IA4JoB,SAAnBwgB,mBAAmB,CAACC,IAAD,EAAO;IAC7B,QAAIjD,IAAI,GAAGT,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUQ,IAAlB,EAAwBT,KAAG,CAACsC,SAAJ,CAAcC,IAAtC,CAAX;IACA,QAAItB,IAAI,GAAGjB,KAAG,CAACiB,IAAJ,CAASyC,IAAT,CAAX;IAEA,QAAIzgB,MAAM,GAAG,IAAIzE,UAAJ,CAAeiiB,IAAI,CAAC1M,UAAL,GAAkBkN,IAAI,CAAClN,UAAtC,CAAb;IACA9Q,IAAAA,MAAM,CAAC+W,GAAP,CAAWyG,IAAX,EAAiB,CAAjB;IACAxd,IAAAA,MAAM,CAAC+W,GAAP,CAAWiH,IAAX,EAAiBR,IAAI,CAAC1M,UAAtB;IACA,WAAO9Q,MAAP;IACH,GApKK;;;IAuKK,SAAJge,IAAI,CAACyC,IAAD,EAAO;IACd,QAAItC,IAAI,GAAGpB,KAAG,CAACoB,IAAJ,CAASsC,IAAI,CAACC,SAAd,EAAyBD,IAAI,CAACE,QAA9B,CAAX;IACA,QAAI7B,IAAI,GAAG/B,KAAG,CAAC+B,IAAJ,CAAS2B,IAAT,CAAX;IACA,QAAIvC,IAAI,GAAGnB,KAAG,CAACmB,IAAJ,CAASuC,IAAT,CAAX;IACA,WAAO1D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUgB,IAAlB,EAAwBG,IAAxB,EAA8BW,IAA9B,EAAoCZ,IAApC,CAAP;IACH,GA5KK;;;IA+KK,SAAJC,IAAI,CAACuC,SAAD,EAAYC,QAAZ,EAAsB;IAC7B,WAAO5D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUmB,IAAlB,EAAwB,IAAI5iB,UAAJ,CAAe,CAC1C,IAD0C,EACpC,IADoC,EAC9B,IAD8B,EACxB,IADwB;IAE1C,QAF0C,EAEpC,IAFoC,EAE9B,IAF8B,EAExB,IAFwB;IAG1C,QAH0C,EAGpC,IAHoC,EAG9B,IAH8B,EAGxB,IAHwB;IAIzCmlB,IAAAA,SAAS,KAAK,EAAf,GAAqB,IAJqB;IAKzCA,IAAAA,SAAS,KAAK,EAAf,GAAqB,IALqB,EAMzCA,SAAS,KAAK,CAAf,GAAoB,IANsB,EAOzCA,SAAD,GAAc,IAP4B,EAQzCC,QAAQ,KAAK,EAAd,GAAoB,IARsB;IASzCA,IAAAA,QAAQ,KAAK,EAAd,GAAoB,IATsB,EAUzCA,QAAQ,KAAK,CAAd,GAAmB,IAVuB,EAWzCA,QAAD,GAAa,IAX6B,EAY1C,IAZ0C,EAYpC,IAZoC,EAY9B,IAZ8B,EAYxB,IAZwB;IAa1C,QAb0C,EAapC,IAboC,EAa9B,IAb8B,EAaxB,IAbwB;IAc1C,QAd0C,EAcpC,IAdoC,EAc9B,IAd8B,EAcxB,IAdwB;IAe1C,QAf0C,EAepC,IAfoC,EAe9B,IAf8B,EAexB,IAfwB,EAgB1C,IAhB0C,EAgBpC,IAhBoC,EAgB9B,IAhB8B,EAgBxB,IAhBwB;IAiB1C,QAjB0C,EAiBpC,IAjBoC,EAiB9B,IAjB8B,EAiBxB,IAjBwB,EAkB1C,IAlB0C,EAkBpC,IAlBoC,EAkB9B,IAlB8B,EAkBxB,IAlBwB,EAmB1C,IAnB0C,EAmBpC,IAnBoC,EAmB9B,IAnB8B,EAmBxB,IAnBwB,EAoB1C,IApB0C,EAoBpC,IApBoC,EAoB9B,IApB8B,EAoBxB,IApBwB,EAqB1C,IArB0C,EAqBpC,IArBoC,EAqB9B,IArB8B,EAqBxB,IArBwB,EAsB1C,IAtB0C,EAsBpC,IAtBoC,EAsB9B,IAtB8B,EAsBxB,IAtBwB,EAuB1C,IAvB0C,EAuBpC,IAvBoC,EAuB9B,IAvB8B,EAuBxB,IAvBwB,EAwB1C,IAxB0C,EAwBpC,IAxBoC,EAwB9B,IAxB8B,EAwBxB,IAxBwB;IAyB1C,QAzB0C,EAyBpC,IAzBoC,EAyB9B,IAzB8B,EAyBxB,IAzBwB;IA0B1C,QA1B0C,EA0BpC,IA1BoC,EA0B9B,IA1B8B,EA0BxB,IA1BwB,EA2B1C,IA3B0C,EA2BpC,IA3BoC,EA2B9B,IA3B8B,EA2BxB,IA3BwB,EA4B1C,IA5B0C,EA4BpC,IA5BoC,EA4B9B,IA5B8B,EA4BxB,IA5BwB,EA6B1C,IA7B0C,EA6BpC,IA7BoC,EA6B9B,IA7B8B,EA6BxB,IA7BwB,EA8B1C,IA9B0C,EA8BpC,IA9BoC,EA8B9B,IA9B8B,EA8BxB,IA9BwB;IA+B1C,QA/B0C,EA+BpC,IA/BoC,EA+B9B,IA/B8B,EA+BxB,IA/BwB;IAAA,KAAf,CAAxB,CAAP;IAiCH,GAjNK;;;IAoNK,SAAJ7B,IAAI,CAAC2B,IAAD,EAAO;IACd,WAAO1D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAU8B,IAAlB,EAAwB/B,KAAG,CAACkC,IAAJ,CAASwB,IAAT,CAAxB,EAAwC1D,KAAG,CAACa,IAAJ,CAAS6C,IAAT,CAAxC,CAAP;IACH,GAtNK;;;IAyNK,SAAJxB,IAAI,CAACwB,IAAD,EAAO;IACd,QAAIG,OAAO,GAAGH,IAAI,CAACI,EAAnB;IAAA,QAAuBF,QAAQ,GAAGF,IAAI,CAACE,QAAvC;IACA,QAAItnB,KAAK,GAAGonB,IAAI,CAACK,YAAjB;IAAA,QAA+BrnB,MAAM,GAAGgnB,IAAI,CAACM,aAA7C;IAEA,WAAOhE,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUiC,IAAlB,EAAwB,IAAI1jB,UAAJ,CAAe,CAC1C,IAD0C,EACpC,IADoC,EAC9B,IAD8B,EACxB,IADwB;IAE1C,QAF0C,EAEpC,IAFoC,EAE9B,IAF8B,EAExB,IAFwB;IAG1C,QAH0C,EAGpC,IAHoC,EAG9B,IAH8B,EAGxB,IAHwB;IAIzCqlB,IAAAA,OAAO,KAAK,EAAb,GAAmB,IAJuB;IAKzCA,IAAAA,OAAO,KAAK,EAAb,GAAmB,IALuB,EAMzCA,OAAO,KAAK,CAAb,GAAkB,IANwB,EAOzCA,OAAD,GAAY,IAP8B,EAQ1C,IAR0C,EAQpC,IARoC,EAQ9B,IAR8B,EAQxB,IARwB;IASzCD,IAAAA,QAAQ,KAAK,EAAd,GAAoB,IATsB;IAUzCA,IAAAA,QAAQ,KAAK,EAAd,GAAoB,IAVsB,EAWzCA,QAAQ,KAAK,CAAd,GAAmB,IAXuB,EAYzCA,QAAD,GAAa,IAZ6B,EAa1C,IAb0C,EAapC,IAboC,EAa9B,IAb8B,EAaxB,IAbwB;IAc1C,QAd0C,EAcpC,IAdoC,EAc9B,IAd8B,EAcxB,IAdwB,EAe1C,IAf0C,EAepC,IAfoC,EAe9B,IAf8B,EAexB,IAfwB;IAgB1C,QAhB0C,EAgBpC,IAhBoC,EAgB9B,IAhB8B,EAgBxB,IAhBwB;IAiB1C,QAjB0C,EAiBpC,IAjBoC,EAiB9B,IAjB8B,EAiBxB,IAjBwB;IAkB1C,QAlB0C,EAkBpC,IAlBoC,EAkB9B,IAlB8B,EAkBxB,IAlBwB,EAmB1C,IAnB0C,EAmBpC,IAnBoC,EAmB9B,IAnB8B,EAmBxB,IAnBwB,EAoB1C,IApB0C,EAoBpC,IApBoC,EAoB9B,IApB8B,EAoBxB,IApBwB,EAqB1C,IArB0C,EAqBpC,IArBoC,EAqB9B,IArB8B,EAqBxB,IArBwB,EAsB1C,IAtB0C,EAsBpC,IAtBoC,EAsB9B,IAtB8B,EAsBxB,IAtBwB,EAuB1C,IAvB0C,EAuBpC,IAvBoC,EAuB9B,IAvB8B,EAuBxB,IAvBwB,EAwB1C,IAxB0C,EAwBpC,IAxBoC,EAwB9B,IAxB8B,EAwBxB,IAxBwB,EAyB1C,IAzB0C,EAyBpC,IAzBoC,EAyB9B,IAzB8B,EAyBxB,IAzBwB;IA0BzCtnB,IAAAA,KAAK,KAAK,CAAX,GAAgB,IA1B0B;IA2BzCA,IAAAA,KAAD,GAAU,IA3BgC,EA4B1C,IA5B0C,EA4BpC,IA5BoC,EA6BzCI,MAAM,KAAK,CAAZ,GAAiB,IA7ByB,EA8BzCA,MAAD,GAAW,IA9B+B,EA+B1C,IA/B0C,EA+BpC,IA/BoC,CAAf,CAAxB,CAAP;IAiCH;;IAEU,SAAJmkB,IAAI,CAAC6C,IAAD,EAAO;IACd,WAAO1D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUY,IAAlB,EAAwBb,KAAG,CAACY,IAAJ,CAAS8C,IAAT,CAAxB,EAAwC1D,KAAG,CAACU,IAAJ,CAASgD,IAAT,CAAxC,EAAwD1D,KAAG,CAACe,IAAJ,CAAS2C,IAAT,CAAxD,CAAP;IACH,GAlQK;;;IAqQK,SAAJ9C,IAAI,CAAC8C,IAAD,EAAO;IACd,QAAIC,SAAS,GAAGD,IAAI,CAACC,SAArB;IACA,QAAIC,QAAQ,GAAGF,IAAI,CAACE,QAApB;IACA,WAAO5D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUW,IAAlB,EAAwB,IAAIpiB,UAAJ,CAAe,CAC1C,IAD0C,EACpC,IADoC,EAC9B,IAD8B,EACxB,IADwB;IAE1C,QAF0C,EAEpC,IAFoC,EAE9B,IAF8B,EAExB,IAFwB;IAG1C,QAH0C,EAGpC,IAHoC,EAG9B,IAH8B,EAGxB,IAHwB;IAIzCmlB,IAAAA,SAAS,KAAK,EAAf,GAAqB,IAJqB;IAKzCA,IAAAA,SAAS,KAAK,EAAf,GAAqB,IALqB,EAMzCA,SAAS,KAAK,CAAf,GAAoB,IANsB,EAOzCA,SAAD,GAAc,IAP4B,EAQzCC,QAAQ,KAAK,EAAd,GAAoB,IARsB;IASzCA,IAAAA,QAAQ,KAAK,EAAd,GAAoB,IATsB,EAUzCA,QAAQ,KAAK,CAAd,GAAmB,IAVuB,EAWzCA,QAAD,GAAa,IAX6B,EAY1C,IAZ0C,EAYpC,IAZoC;IAa1C,QAb0C,EAapC,IAboC;IAAA,KAAf,CAAxB,CAAP;IAeH,GAvRK;;;IA0RK,SAAJlD,IAAI,CAACgD,IAAD,EAAO;IACd,QAAI3c,IAAI,GAAG,IAAX;;IACA,QAAI2c,IAAI,CAACtlB,IAAL,KAAc,OAAlB,EAA2B;IACvB2I,MAAAA,IAAI,GAAGiZ,KAAG,CAACsC,SAAJ,CAAcQ,UAArB;IACH,KAFD,MAEO;IACH/b,MAAAA,IAAI,GAAGiZ,KAAG,CAACsC,SAAJ,CAAcO,UAArB;IACH;;IACD,WAAO7C,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUS,IAAlB,EAAwB3Z,IAAxB,CAAP;IACH,GAlSK;;;IAqSK,SAAJga,IAAI,CAAC2C,IAAD,EAAO;IACd,QAAIO,IAAI,GAAG,IAAX;;IACA,QAAIP,IAAI,CAACtlB,IAAL,KAAc,OAAlB,EAA2B;IACvB6lB,MAAAA,IAAI,GAAGjE,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUmC,IAAlB,EAAwBpC,KAAG,CAACsC,SAAJ,CAAcU,IAAtC,CAAP;IACH,KAFD,MAEO;IACHiB,MAAAA,IAAI,GAAGjE,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUkC,IAAlB,EAAwBnC,KAAG,CAACsC,SAAJ,CAAcW,IAAtC,CAAP;IACH;;IACD,WAAOjD,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUc,IAAlB,EAAwBkD,IAAxB,EAA8BjE,KAAG,CAACM,IAAJ,EAA9B,EAA0CN,KAAG,CAACsB,IAAJ,CAASoC,IAAT,CAA1C,CAAP;IACH,GA7SK;;;IAgTK,SAAJpD,IAAI,GAAG;IACV,QAAIrd,MAAM,GAAG+c,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUK,IAAlB,EACTN,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUM,IAAlB,EAAwBP,KAAG,CAACsC,SAAJ,CAAcS,IAAtC,CADS,CAAb;IAGA,WAAO9f,MAAP;IACH,GArTK;;;IAwTK,SAAJqe,IAAI,CAACoC,IAAD,EAAO;IACd,QAAIzgB,MAAM,GAAG+c,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUqB,IAAlB;IACTtB,IAAAA,KAAG,CAACyB,IAAJ,CAASiC,IAAT,CADS;IAET1D,IAAAA,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAU0B,IAAlB,EAAwB3B,KAAG,CAACsC,SAAJ,CAAcG,IAAtC,CAFS;IAGTzC,IAAAA,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUuB,IAAlB,EAAwBxB,KAAG,CAACsC,SAAJ,CAAcI,IAAtC,CAHS;IAIT1C,IAAAA,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUyB,IAAlB,EAAwB1B,KAAG,CAACsC,SAAJ,CAAcM,IAAtC,CAJS;IAKT5C,IAAAA,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUsB,IAAlB,EAAwBvB,KAAG,CAACsC,SAAJ,CAAcK,IAAtC,CALS;IAAA,KAAb;IAOA,WAAO1f,MAAP;IACH,GAjUK;;;IAoUK,SAAJwe,IAAI,CAACiC,IAAD,EAAO;IACd,QAAIA,IAAI,CAACtlB,IAAL,KAAc,OAAlB,EAA2B;IACvB;IACA,aAAO4hB,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUwB,IAAlB,EAAwBzB,KAAG,CAACsC,SAAJ,CAAcE,WAAtC,EAAmDxC,KAAG,CAACkB,IAAJ,CAASwC,IAAT,CAAnD,CAAP;IACH,KAHD,MAGO;IACH,UAAIA,IAAI,CAACQ,SAAL,KAAmB,KAAvB,EAA8B;IAC1B;IACA,eAAOlE,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUwB,IAAlB,EAAwBzB,KAAG,CAACsC,SAAJ,CAAcE,WAAtC,EAAmDxC,KAAG,CAACE,IAAJ,CAASwD,IAAT,CAAnD,CAAP;IACH,OAHD,MAGO;IACH;IACA,eAAO1D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUwB,IAAlB,EAAwBzB,KAAG,CAACsC,SAAJ,CAAcE,WAAtC,EAAmDxC,KAAG,CAACG,IAAJ,CAASuD,IAAT,CAAnD,CAAP;IACH;IACJ;IACJ;;IAEU,SAAJxC,IAAI,CAACwC,IAAD,EAAO;IACd,QAAIS,YAAY,GAAGT,IAAI,CAACS,YAAxB;IACA,QAAInT,UAAU,GAAG0S,IAAI,CAACU,eAAtB;IAEA,QAAIrd,IAAI,GAAG,IAAIvI,UAAJ,CAAe,CACtB,IADsB,EAChB,IADgB,EACV,IADU,EACJ,IADI;IAEtB,QAFsB,EAEhB,IAFgB,EAEV,IAFU,EAEJ,IAFI;IAGtB,QAHsB,EAGhB,IAHgB,EAGV,IAHU,EAGJ,IAHI;IAItB,QAJsB,EAIhB,IAJgB,EAIV,IAJU,EAIJ,IAJI,EAKtB,IALsB,EAKhB2lB,YALgB;IAMtB,QANsB,EAMhB,IANgB;IAOtB,QAPsB,EAOhB,IAPgB,EAOV,IAPU,EAOJ,IAPI;IAQrBnT,IAAAA,UAAU,KAAK,CAAhB,GAAqB,IARC;IASrBA,IAAAA,UAAD,GAAe,IATO,EAUtB,IAVsB,EAUhB,IAVgB,CAAf,CAAX;IAaA,WAAOgP,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUiB,IAAlB,EAAwBna,IAAxB,EAA8BiZ,KAAG,CAACQ,IAAJ,CAASkD,IAAT,CAA9B,CAAP;IACH;;IAEU,SAAJlD,IAAI,CAACkD,IAAD,EAAO;IACd,QAAIzL,MAAM,GAAGyL,IAAI,CAACzL,MAAL,IAAe,EAA5B;IACA,QAAIoM,UAAU,GAAGpM,MAAM,CAAC1a,MAAxB;IACA,QAAIwJ,IAAI,GAAG,IAAIvI,UAAJ,CAAe,CACtB,IADsB,EAChB,IADgB,EACV,IADU,EACJ,IADI;IAGtB,QAHsB;IAItB,WAAO6lB,UAJe;IAKtB,QALsB,EAKhB,IALgB;IAMtB,QANsB;IAQtB,QARsB;IAStB,WAAOA,UATe;IAUtB,QAVsB;IAWtB,QAXsB;IAYtB,QAZsB,EAYhB,IAZgB,EAYV,IAZU;IAatB,QAbsB,EAahB,IAbgB,EAaV,IAbU,EAaJ,IAbI;IActB,QAdsB,EAchB,IAdgB,EAcV,IAdU,EAcJ,IAdI;IAgBtB,QAhBsB;IAAA,MAiBxBC,MAjBwB,CAiBjB,CACLD,UADK,CAjBiB,EAmBvBC,MAnBuB,CAoBtBrM,MApBsB,EAqBxBqM,MArBwB,CAqBjB,CACL,IADK,EACC,IADD,EACO,IADP;IAAA,KArBiB,CAAf,CAAX;IAwBA,WAAOtE,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUO,IAAlB,EAAwBzZ,IAAxB,CAAP;IACH,GAnYK;;;IAsYK,SAAJmZ,IAAI,CAACwD,IAAD,EAAO;IACd,QAAIa,IAAI,GAAGb,IAAI,CAACa,IAAhB;IACA,UAAMjoB,KAAK,GAAGonB,IAAI,CAACc,UAAnB;IACA,UAAM9nB,MAAM,GAAGgnB,IAAI,CAACe,WAApB;IACA,QAAI1d,IAAI,GAAG,IAAIvI,UAAJ,CAAe,CACtB,CADsB,EACnB,CADmB,EAChB,CADgB,EACb,CADa,EAEtB,CAFsB,EAEnB,CAFmB,EAEhB,CAFgB,EAEb,CAFa,EAGtB,CAHsB,EAGnB,CAHmB,EAGhB,CAHgB,EAGb,CAHa,EAItB,CAJsB,EAInB,CAJmB,EAIhB,CAJgB,EAIb,CAJa,EAKtB,CALsB,EAKnB,CALmB,EAKhB,CALgB,EAKb,CALa,EAMtB,CANsB,EAMnB,CANmB,EAMhB,CANgB,EAMb,CANa,EAOtBlC,KAAK,KAAK,CAAV,GAAc,GAPQ,EAQtBA,KAAK,GAAG,GARc,EAStBI,MAAM,KAAK,CAAX,GAAe,GATO,EAUtBA,MAAM,GAAG,GAVa,EAWtB,CAXsB,EAWnB,EAXmB,EAWf,CAXe,EAWZ,CAXY,EAYtB,CAZsB,EAYnB,EAZmB,EAYf,CAZe,EAYZ,CAZY,EAatB,CAbsB,EAanB,CAbmB,EAahB,CAbgB,EAab,CAba,EActB,CAdsB,EAcnB,CAdmB,EAetB,CAfsB,EAgBtB,CAhBsB,EAgBnB,CAhBmB,EAgBhB,CAhBgB,EAgBb,CAhBa,EAiBtB,CAjBsB,EAiBnB,CAjBmB,EAiBhB,CAjBgB,EAiBb,CAjBa,EAkBtB,CAlBsB,EAkBnB,CAlBmB,EAkBhB,CAlBgB,EAkBb,CAlBa,EAmBtB,CAnBsB,EAmBnB,CAnBmB,EAmBhB,CAnBgB,EAmBb,CAnBa,EAoBtB,CApBsB,EAoBnB,CApBmB,EAoBhB,CApBgB,EAoBb,CApBa,EAqBtB,CArBsB,EAqBnB,CArBmB,EAqBhB,CArBgB,EAqBb,CArBa,EAsBtB,CAtBsB,EAsBnB,CAtBmB,EAsBhB,CAtBgB,EAsBb,CAtBa,EAuBtB,CAvBsB,EAuBnB,CAvBmB,EAuBhB,CAvBgB,EAwBtB,CAxBsB,EAwBnB,EAxBmB,EAyBtB,GAzBsB,EAyBjB,GAzBiB,CAAf,CAAX;IA2BA,WAAOsjB,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUC,IAAlB,EAAwBnZ,IAAxB,EAA8BiZ,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUhe,IAAlB,EAAwBsiB,IAAxB,CAA9B,CAAP;IACH,GAtaK;;;IAyaK,SAAJpE,IAAI,CAACuD,IAAD,EAAO;IACd,QAAIa,IAAI,GAAGb,IAAI,CAACa,IAAhB;IACA,UAAMjoB,KAAK,GAAGonB,IAAI,CAACc,UAAnB;IACA,UAAM9nB,MAAM,GAAGgnB,IAAI,CAACe,WAApB;IACA,QAAI1d,IAAI,GAAG,IAAIvI,UAAJ,CAAe,CACtB,CADsB,EACnB,CADmB,EAChB,CADgB,EACb,CADa,EAEtB,CAFsB,EAEnB,CAFmB,EAEhB,CAFgB,EAEb,CAFa,EAGtB,CAHsB,EAGnB,CAHmB,EAGhB,CAHgB,EAGb,CAHa,EAItB,CAJsB,EAInB,CAJmB,EAIhB,CAJgB,EAIb,CAJa,EAKtB,CALsB,EAKnB,CALmB,EAKhB,CALgB,EAKb,CALa,EAMtB,CANsB,EAMnB,CANmB,EAMhB,CANgB,EAMb,CANa,EAOtBlC,KAAK,KAAK,CAAV,GAAc,GAPQ,EAQtBA,KAAK,GAAG,GARc,EAStBI,MAAM,KAAK,CAAX,GAAe,GATO,EAUtBA,MAAM,GAAG,GAVa,EAWtB,CAXsB,EAWnB,EAXmB,EAWf,CAXe,EAWZ,CAXY,EAYtB,CAZsB,EAYnB,EAZmB,EAYf,CAZe,EAYZ,CAZY,EAatB,CAbsB,EAanB,CAbmB,EAahB,CAbgB,EAab,CAba,EActB,CAdsB,EAcnB,CAdmB,EAetB,CAfsB,EAgBtB,CAhBsB,EAgBnB,CAhBmB,EAgBhB,CAhBgB,EAgBb,CAhBa,EAiBtB,CAjBsB,EAiBnB,CAjBmB,EAiBhB,CAjBgB,EAiBb,CAjBa,EAkBtB,CAlBsB,EAkBnB,CAlBmB,EAkBhB,CAlBgB,EAkBb,CAlBa,EAmBtB,CAnBsB,EAmBnB,CAnBmB,EAmBhB,CAnBgB,EAmBb,CAnBa,EAoBtB,CApBsB,EAoBnB,CApBmB,EAoBhB,CApBgB,EAoBb,CApBa,EAqBtB,CArBsB,EAqBnB,CArBmB,EAqBhB,CArBgB,EAqBb,CArBa,EAsBtB,CAtBsB,EAsBnB,CAtBmB,EAsBhB,CAtBgB,EAsBb,CAtBa,EAuBtB,CAvBsB,EAuBnB,CAvBmB,EAuBhB,CAvBgB,EAwBtB,CAxBsB,EAwBnB,EAxBmB,EAyBtB,GAzBsB,EAyBjB,GAzBiB,CAAf,CAAX;IA2BA,WAAOsjB,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUE,IAAlB,EAAwBpZ,IAAxB,EAA8BiZ,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUG,IAAlB,EAAwBmE,IAAxB,CAA9B,CAAP;IACH,GAzcK;;;IA4cK,SAAJpD,IAAI,CAACuC,IAAD,EAAO;IACd,WAAO1D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUkB,IAAlB,EAAwBnB,KAAG,CAACiC,IAAJ,CAASyB,IAAT,CAAxB,CAAP;IACH,GA9cK;;;IAidK,SAAJzB,IAAI,CAACyB,IAAD,EAAO;IACd,QAAIG,OAAO,GAAGH,IAAI,CAACI,EAAnB;IACA,QAAI/c,IAAI,GAAG,IAAIvI,UAAJ,CAAe,CACtB,IADsB,EAChB,IADgB,EACV,IADU,EACJ,IADI;IAErBqlB,IAAAA,OAAO,KAAK,EAAb,GAAmB,IAFG;IAGrBA,IAAAA,OAAO,KAAK,EAAb,GAAmB,IAHG,EAIrBA,OAAO,KAAK,CAAb,GAAkB,IAJI,EAKrBA,OAAD,GAAY,IALU,EAMtB,IANsB,EAMhB,IANgB,EAMV,IANU,EAMJ,IANI;IAOtB,QAPsB,EAOhB,IAPgB,EAOV,IAPU,EAOJ,IAPI;IAQtB,QARsB,EAQhB,IARgB,EAQV,IARU,EAQJ,IARI;IAStB,QATsB,EAShB,IATgB,EASV,IATU,EASJ,IATI;IAAA,KAAf,CAAX;IAWA,WAAO7D,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUgC,IAAlB,EAAwBlb,IAAxB,CAAP;IACH,GA/dK;;;IAkeK,SAAJia,IAAI,CAAC0D,KAAD,EAAQC,mBAAR,EAA6B;IACpC,WAAO3E,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUe,IAAlB,EAAwBhB,KAAG,CAACc,IAAJ,CAAS4D,KAAK,CAACE,cAAf,CAAxB,EAAwD5E,KAAG,CAAC8B,IAAJ,CAAS4C,KAAT,EAAgBC,mBAAhB,CAAxD,CAAP;IACH,GApeK;;;IAseK,SAAJ7D,IAAI,CAAC8D,cAAD,EAAiB;IACxB,QAAI7d,IAAI,GAAG,IAAIvI,UAAJ,CAAe,CACtB,IADsB,EAChB,IADgB,EACV,IADU,EACJ,IADI,EAErBomB,cAAc,KAAK,EAApB,GAA0B,IAFJ;IAGrBA,IAAAA,cAAc,KAAK,EAApB,GAA0B,IAHJ,EAIrBA,cAAc,KAAK,CAApB,GAAyB,IAJH,EAKrBA,cAAD,GAAmB,IALG,CAAf,CAAX;IAOA,WAAO5E,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUa,IAAlB,EAAwB/Z,IAAxB,CAAP;IACH,GA/eK;;;IAkfK,SAAJ+a,IAAI,CAAC4C,KAAD,EAAQC,mBAAR,EAA6B;IACpC,QAAId,OAAO,GAAGa,KAAK,CAACZ,EAApB,CADoC;;IAIpC,QAAIjC,IAAI,GAAG7B,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAU4B,IAAlB,EAAwB,IAAIrjB,UAAJ,CAAe,CAC9C,IAD8C,EACxC,IADwC,EAClC,IADkC,EAC5B,IAD4B;IAE7CqlB,IAAAA,OAAO,KAAK,EAAb,GAAmB,IAF2B;IAG7CA,IAAAA,OAAO,KAAK,EAAb,GAAmB,IAH2B,EAI7CA,OAAO,KAAK,CAAb,GAAkB,IAJ4B,EAK7CA,OAAD,GAAY,IALkC,CAAf,CAAxB,CAAX,CAJoC;;IAYpC,QAAIjC,IAAI,GAAG5B,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAU2B,IAAlB,EAAwB,IAAIpjB,UAAJ,CAAe,CAC9C,IAD8C,EACxC,IADwC,EAClC,IADkC,EAC5B,IAD4B;IAE7CmmB,IAAAA,mBAAmB,KAAK,EAAzB,GAA+B,IAFe;IAG7CA,IAAAA,mBAAmB,KAAK,EAAzB,GAA+B,IAHe,EAI7CA,mBAAmB,KAAK,CAAzB,GAA8B,IAJgB,EAK7CA,mBAAD,GAAwB,IALsB,CAAf,CAAxB,CAAX;IAOA,QAAItD,IAAI,GAAGrB,KAAG,CAACqB,IAAJ,CAASqD,KAAT,CAAX;IACA,QAAI1C,IAAI,GAAGhC,KAAG,CAACgC,IAAJ,CAAS0C,KAAT,EAAgBrD,IAAI,CAACtN,UAAL,GAAkB,EAAlB,GAAuB,EAAvB,GAA4B,CAA5B,GAAgC,EAAhC,GAAqC,CAArC,GAAyC,CAAzD,CAAX;IAEA,WAAOiM,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAU6B,IAAlB,EAAwBD,IAAxB,EAA8BD,IAA9B,EAAoCI,IAApC,EAA0CX,IAA1C,CAAP;IACH,GAzgBK;;;IA4gBK,SAAJA,IAAI,CAACqD,KAAD,EAAQ;IACf,QAAI3d,IAAI,GAAG,IAAIvI,UAAJ,CAAe,IAAI,CAAnB,CAAX;IACA,QAAIqmB,KAAK,GAAGH,KAAK,CAACG,KAAlB;IACA9d,IAAAA,IAAI,CAAC,CAAD,CAAJ,GAAU8d,KAAK,CAACC,SAAN,IAAmB,CAAnB,GACJD,KAAK,CAACE,SAAN,IAAmB,CADf,GAEJF,KAAK,CAACG,YAAN,IAAsB,CAFlB,GAGJH,KAAK,CAACI,aAHZ;IAIA,WAAOjF,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUoB,IAAlB,EAAwBta,IAAxB,CAAP;IACH,GAphBK;;;IAshBK,SAAJib,IAAI,CAAC0C,KAAD,EAAQlB,MAAR,EAAgB;IACvB,QAAI0B,QAAQ,GAAG,KAAK,EAApB;IACA,QAAIne,IAAI,GAAG,IAAIvI,UAAJ,CAAe0mB,QAAf,CAAX;IACA1B,IAAAA,MAAM,IAAI,IAAI0B,QAAd;IAEAne,IAAAA,IAAI,CAACiT,GAAL,CAAS,CACL,IADK,EACC,IADD,EACO,IADP,EACa,IADb;IAEL,QAFK,EAEC,IAFD,EAEO,IAFP,EAEa,IAFb;IAGJwJ,IAAAA,MAAM,KAAK,EAAZ,GAAkB,IAHb;IAIJA,IAAAA,MAAM,KAAK,EAAZ,GAAkB,IAJb,EAKJA,MAAM,KAAK,CAAZ,GAAiB,IALZ,EAMJA,MAAD,GAAW,IANN,CAAT,EAOG,CAPH;IASA,QAAII,QAAQ,GAAGc,KAAK,CAACd,QAArB;IACA,QAAIxiB,IAAI,GAAGsjB,KAAK,CAACtjB,IAAjB;IACA,QAAIyjB,KAAK,GAAGH,KAAK,CAACG,KAAlB;IACA,QAAIM,GAAG,GAAGT,KAAK,CAACS,GAAhB;IAEApe,IAAAA,IAAI,CAACiT,GAAL,CAAS,CACJ4J,QAAQ,KAAK,EAAd,GAAoB,IADf;IAEJA,IAAAA,QAAQ,KAAK,EAAd,GAAoB,IAFf,EAGJA,QAAQ,KAAK,CAAd,GAAmB,IAHd,EAIJA,QAAD,GAAa,IAJR,EAKJxiB,IAAI,KAAK,EAAV,GAAgB,IALX;IAMJA,IAAAA,IAAI,KAAK,EAAV,GAAgB,IANX,EAOJA,IAAI,KAAK,CAAV,GAAe,IAPV,EAQJA,IAAD,GAAS,IARJ,EASJyjB,KAAK,CAACC,SAAN,IAAmB,CAApB,GAAyBD,KAAK,CAACE,SAT1B;IAUJF,IAAAA,KAAK,CAACG,YAAN,IAAsB,CAAvB,GAA6BH,KAAK,CAACI,aAAN,IAAuB,CAApD,GAAyDJ,KAAK,CAACO,SAV1D,EAWL,IAXK,EAWC,IAXD;IAYJD,IAAAA,GAAG,KAAK,EAAT,GAAe,IAZV;IAaJA,IAAAA,GAAG,KAAK,EAAT,GAAe,IAbV,EAcJA,GAAG,KAAK,CAAT,GAAc,IAdT,EAeJA,GAAD,GAAQ,IAfH,CAAT,EAgBG,EAhBH;IAkBA,WAAOnF,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAU+B,IAAlB,EAAwBjb,IAAxB,CAAP;IACH,GA5jBK;;;IA8jBK,SAAJ4Z,IAAI,CAAC5Z,IAAD,EAAO;IACd,WAAOiZ,KAAG,CAACkD,GAAJ,CAAQlD,KAAG,CAACC,KAAJ,CAAUU,IAAlB,EAAwB5Z,IAAxB,CAAP;IACH;;IAhkBK;;AAmkBViZ,SAAG,CAACvsB,IAAJ;;ICnkBA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAGA;IACA,MAAM4xB,SAAN,CAAgB;IAEZ7qB,EAAAA,WAAW,CAAC8qB,UAAD,EAAa;IACpB,SAAKC,GAAL,GAAW,WAAX;IAEA,SAAKC,OAAL,GAAeF,UAAf;IACA,SAAKG,aAAL,GAAqB,CAArB;IACA,SAAKC,YAAL,GAAoBJ,UAAU,CAACvR,UAA/B;IACA,SAAK4R,WAAL,GAAmBL,UAAU,CAACvR,UAAX,GAAwB,CAA3C;IACA,SAAK6R,aAAL,GAAqB,CAArB;IACA,SAAKC,uBAAL,GAA+B,CAA/B;IACH;;IAEDjvB,EAAAA,OAAO,GAAG;IACN,SAAK4uB,OAAL,GAAe,IAAf;IACH;;IAEDM,EAAAA,gBAAgB,GAAG;IACf,QAAIC,iBAAiB,GAAG,KAAKL,YAAL,GAAoB,KAAKD,aAAjD;;IAKA,QAAIO,UAAU,GAAGzpB,IAAI,CAAC8D,GAAL,CAAS,CAAT,EAAY0lB,iBAAZ,CAAjB;IACA,QAAIE,IAAI,GAAG,IAAIznB,UAAJ,CAAe,CAAf,CAAX;IACAynB,IAAAA,IAAI,CAACjM,GAAL,CAAS,KAAKwL,OAAL,CAAarjB,QAAb,CAAsB,KAAKsjB,aAA3B,EAA0C,KAAKA,aAAL,GAAqBO,UAA/D,CAAT;IACA,SAAKJ,aAAL,GAAqB,IAAIvL,QAAJ,CAAa4L,IAAI,CAAC/vB,MAAlB,EAA0BqkB,SAA1B,CAAoC,CAApC,EAAuC,KAAvC,CAArB;IAEA,SAAKkL,aAAL,IAAsBO,UAAtB;IACA,SAAKH,uBAAL,GAA+BG,UAAU,GAAG,CAA5C;IACH;;IAEDE,EAAAA,QAAQ,CAACC,IAAD,EAAO;;IAKX,QAAIA,IAAI,IAAI,KAAKN,uBAAjB,EAA0C;IACtC,UAAI5iB,MAAM,GAAG,KAAK2iB,aAAL,KAAwB,KAAKO,IAA1C;IACA,WAAKP,aAAL,KAAuBO,IAAvB;IACA,WAAKN,uBAAL,IAAgCM,IAAhC;IACA,aAAOljB,MAAP;IACH;;IAED,QAAIA,MAAM,GAAG,KAAK4iB,uBAAL,GAA+B,KAAKD,aAApC,GAAoD,CAAjE;IACA3iB,IAAAA,MAAM,GAAGA,MAAM,KAAM,KAAK,KAAK4iB,uBAA/B;IACA,QAAIO,cAAc,GAAGD,IAAI,GAAG,KAAKN,uBAAjC;;IAEA,SAAKC,gBAAL;;IACA,QAAIO,cAAc,GAAG9pB,IAAI,CAAC8D,GAAL,CAAS+lB,cAAT,EAAyB,KAAKP,uBAA9B,CAArB;IAEA,QAAIS,OAAO,GAAG,KAAKV,aAAL,KAAwB,KAAKS,cAA3C;IACA,SAAKT,aAAL,KAAuBS,cAAvB;IACA,SAAKR,uBAAL,IAAgCQ,cAAhC;IAEApjB,IAAAA,MAAM,GAAIA,MAAM,IAAIojB,cAAX,GAA6BC,OAAtC;IACA,WAAOrjB,MAAP;IACH;;IAEDsjB,EAAAA,QAAQ,GAAG;IACP,WAAO,KAAKL,QAAL,CAAc,CAAd,MAAqB,CAA5B;IACH;;IAEDM,EAAAA,QAAQ,GAAG;IACP,WAAO,KAAKN,QAAL,CAAc,CAAd,CAAP;IACH;;IAEDO,EAAAA,gBAAgB,GAAG;IACf,QAAIC,UAAJ;;IACA,SAAKA,UAAU,GAAG,CAAlB,EAAqBA,UAAU,GAAG,KAAKb,uBAAvC,EAAgEa,UAAU,EAA1E,EAA8E;IAC1E,UAAI,OAAO,KAAKd,aAAL,GAAsB,eAAec,UAA5C,CAAJ,EAA8D;IAC1D,aAAKd,aAAL,KAAuBc,UAAvB;IACA,aAAKb,uBAAL,IAAgCa,UAAhC;IACA,eAAOA,UAAP;IACH;IACJ;;IACD,SAAKZ,gBAAL;;IACA,WAAOY,UAAU,GAAG,KAAKD,gBAAL,EAApB;IACH;;IAEDE,EAAAA,OAAO,GAAG;IAAG;IACT,QAAIC,aAAa,GAAG,KAAKH,gBAAL,EAApB;;IACA,WAAO,KAAKP,QAAL,CAAcU,aAAa,GAAG,CAA9B,IAAmC,CAA1C;IACH;;IAEDC,EAAAA,OAAO,GAAG;IAAG;IACT,QAAIrmB,KAAK,GAAG,KAAKmmB,OAAL,EAAZ;;IACA,QAAInmB,KAAK,GAAG,IAAZ,EAAkB;IACd,aAAQA,KAAK,GAAG,CAAT,KAAgB,CAAvB;IACH,KAFD,MAEO;IACH,aAAO,CAAC,CAAD,IAAMA,KAAK,KAAK,CAAhB,CAAP;IACH;IACJ;;IA5FW;;ICpBhB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAIA,MAAMsmB,WAAN,CAAgB;IAEK,SAAVC,UAAU,CAACzB,UAAD,EAAa;IAC1B,QAAI0B,GAAG,GAAG1B,UAAV;IACA,QAAI2B,UAAU,GAAGD,GAAG,CAACjT,UAArB;IACA,QAAImT,GAAG,GAAG,IAAI1oB,UAAJ,CAAeyoB,UAAf,CAAV;IACA,QAAIE,OAAO,GAAG,CAAd;;IAEA,SAAK,IAAIngB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGigB,UAApB,EAAgCjgB,CAAC,EAAjC,EAAqC;IACjC,UAAIA,CAAC,IAAI,CAAT,EAAY;IACR;IACA,YAAIggB,GAAG,CAAChgB,CAAD,CAAH,KAAW,IAAX,IAAmBggB,GAAG,CAAChgB,CAAC,GAAG,CAAL,CAAH,KAAe,IAAlC,IAA0CggB,GAAG,CAAChgB,CAAC,GAAG,CAAL,CAAH,KAAe,IAA7D,EAAmE;IAC/D;IACH;IACJ;;IACDkgB,MAAAA,GAAG,CAACC,OAAD,CAAH,GAAeH,GAAG,CAAChgB,CAAD,CAAlB;IACAmgB,MAAAA,OAAO;IACV;;IAED,WAAO,IAAI3oB,UAAJ,CAAe0oB,GAAG,CAAChxB,MAAnB,EAA2B,CAA3B,EAA8BixB,OAA9B,CAAP;IACH,GApBW;IAuBZ;;;IACe,SAARC,QAAQ,CAAC9B,UAAD,EAAa;IACxB,QAAI+B,IAAI,GAAGP,WAAS,CAACC,UAAV,CAAqBzB,UAArB,CAAX;;IACA,QAAIgC,EAAE,GAAG,IAAIjC,SAAJ,CAAcgC,IAAd,CAAT;IAEAC,IAAAA,EAAE,CAACd,QAAH,GAJwB;IAMxB;;IAEA,QAAIe,WAAW,GAAGD,EAAE,CAACd,QAAH,EAAlB,CARwB;;IASxBc,IAAAA,EAAE,CAACd,QAAH,GATwB;IAUxB;;IACA,QAAIgB,SAAS,GAAGF,EAAE,CAACd,QAAH,EAAhB,CAXwB;IAYxB;;IACAc,IAAAA,EAAE,CAACX,OAAH,GAbwB;;IAexB,QAAIc,cAAc,GAAGX,WAAS,CAACY,gBAAV,CAA2BH,WAA3B,CAArB;IAEA,QAAII,YAAY,GAAGb,WAAS,CAACc,cAAV,CAAyBJ,SAAzB,CAAnB;IAEA,QAAIK,iBAAiB,GAAG,CAAxB;IACA,QAAIC,aAAa,GAAG,GAApB;IACA,QAAIC,mBAAmB,GAAG,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,EAAc,GAAd,CAA1B;IACA,QAAIC,SAAS,GAAG,CAAhB,CAtBwB;;IAyBxB,QAAIT,WAAW,KAAK,GAAhB,IAAuBA,WAAW,KAAK,GAAvC,IAA8CA,WAAW,KAAK,GAA9D,IACAA,WAAW,KAAK,GADhB,IACuBA,WAAW,KAAK,EADvC,IAC6CA,WAAW,KAAK,EAD7D,IAEAA,WAAW,KAAK,EAFhB,IAEsBA,WAAW,KAAK,GAFtC,IAE6CA,WAAW,KAAK,GAF7D,IAGAA,WAAW,KAAK,GAHhB,IAGuBA,WAAW,KAAK,GAH3C,EAGgD;IAC5C;IACAM,MAAAA,iBAAiB,GAAGP,EAAE,CAACX,OAAH,EAApB;;IAEA,UAAIkB,iBAAiB,KAAK,CAA1B,EAA6B;IACzBP,QAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EADyB;IAE5B;;IACD,UAAI2B,iBAAiB,IAAI,CAAzB,EAA4B;IACxBC,QAAAA,aAAa,GAAGC,mBAAmB,CAACF,iBAAD,CAAnC;IACH;;IAEDG,MAAAA,SAAS,GAAGV,EAAE,CAACX,OAAH,KAAe,CAA3B,CAX4C;;IAY5CW,MAAAA,EAAE,CAACX,OAAH,GAZ4C;;IAa5CW,MAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EAb4C;;IAc5C,UAAIoB,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClB,YAAI0B,kBAAkB,GAAIJ,iBAAiB,KAAK,CAAvB,GAA4B,CAA5B,GAAgC,EAAzD;;IACA,aAAK,IAAI7gB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGihB,kBAApB,EAAwCjhB,CAAC,EAAzC,EAA6C;IACzC,cAAIsgB,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClB,gBAAIvf,CAAC,GAAG,CAAR,EAAW;IACP8f,cAAAA,WAAS,CAACoB,gBAAV,CAA2BZ,EAA3B,EAA+B,EAA/B;IACH,aAFD,MAEO;IACHR,cAAAA,WAAS,CAACoB,gBAAV,CAA2BZ,EAA3B,EAA+B,EAA/B;IACH;IACJ;IACJ;IACJ;IACJ,KAtDuB;;;IAwDxBA,IAAAA,EAAE,CAACX,OAAH,GAxDwB;IAyDxB;;IACA,QAAIwB,kBAAkB,GAAGb,EAAE,CAACX,OAAH,EAAzB;;IACA,QAAIwB,kBAAkB,KAAK,CAA3B,EAA8B;IAC1Bb,MAAAA,EAAE,CAACX,OAAH,GAD0B;IAE7B,KAFD,MAEO,IAAIwB,kBAAkB,KAAK,CAA3B,EAA8B;IACjCb,MAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EADiC;;IAEjCoB,MAAAA,EAAE,CAACT,OAAH,GAFiC;;IAGjCS,MAAAA,EAAE,CAACT,OAAH,GAHiC;;IAIjC,UAAIuB,qCAAqC,GAAGd,EAAE,CAACX,OAAH,EAA5C;;IACA,WAAK,IAAI3f,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGohB,qCAApB,EAA2DphB,CAAC,EAA5D,EAAgE;IAC5DsgB,QAAAA,EAAE,CAACT,OAAH,GAD4D;IAE/D;IACJ,KArEuB;;;IAuExB,QAAIwB,UAAU,GAAGf,EAAE,CAACX,OAAH,EAAjB,CAvEwB;IAwExB;;IACAW,IAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EAzEwB;IA0ExB;;IACA,QAAIoC,uBAAuB,GAAGhB,EAAE,CAACX,OAAH,EAA9B,CA3EwB;IA6ExB;;IACA,QAAI4B,8BAA8B,GAAGjB,EAAE,CAACX,OAAH,EAArC,CA9EwB;IAgFxB;IACA;;IACA,QAAI6B,mBAAmB,GAAGlB,EAAE,CAACpB,QAAH,CAAY,CAAZ,CAA1B;;IACA,QAAIsC,mBAAmB,KAAK,CAA5B,EAA+B;IAC3B;IACAlB,MAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EAF2B;IAG9B,KAtFuB;;;IAwFxBoB,IAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EAxFwB;;IA0FxB,QAAIuC,sBAAsB,GAAG,CAA7B;IACA,QAAIC,uBAAuB,GAAG,CAA9B;IACA,QAAIC,qBAAqB,GAAG,CAA5B;IACA,QAAIC,wBAAwB,GAAG,CAA/B;IAEA,QAAIC,mBAAmB,GAAGvB,EAAE,CAACf,QAAH,EAA1B;;IACA,QAAIsC,mBAAJ,EAAyB;IACrBJ,MAAAA,sBAAsB,GAAGnB,EAAE,CAACX,OAAH,EAAzB;IACA+B,MAAAA,uBAAuB,GAAGpB,EAAE,CAACX,OAAH,EAA1B;IACAgC,MAAAA,qBAAqB,GAAGrB,EAAE,CAACX,OAAH,EAAxB;IACAiC,MAAAA,wBAAwB,GAAGtB,EAAE,CAACX,OAAH,EAA3B;IACH;;IAED,QAAImC,SAAS,GAAG,CAAhB;IAAA,QAAmBC,UAAU,GAAG,CAAhC;IACA,QAAI/lB,GAAG,GAAG,CAAV;IAAA,QAAagmB,SAAS,GAAG,IAAzB;IAAA,QAA+BC,OAAO,GAAG,CAAzC;IAAA,QAA4CC,OAAO,GAAG,CAAtD,CAxGwB;;IA0GxB,QAAIC,2BAA2B,GAAG7B,EAAE,CAACf,QAAH,EAAlC;;IACA,QAAI4C,2BAAJ,EAAiC;IAC7B,UAAI7B,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClB,YAAI6C,gBAAgB,GAAG9B,EAAE,CAACd,QAAH,EAAvB;IACA,YAAI6C,WAAW,GAAG,CAAC,CAAD,EAAI,EAAJ,EAAQ,EAAR,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EAAgD,GAAhD,EAAqD,CAArD,EAAwD,CAAxD,EAA2D,CAA3D,CAAlB;IACA,YAAIC,WAAW,GAAG,CAAC,CAAD,EAAI,EAAJ,EAAQ,EAAR,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EAAiD,EAAjD,EAAqD,CAArD,EAAwD,CAAxD,EAA2D,CAA3D,CAAlB;;IAEA,YAAIF,gBAAgB,GAAG,CAAnB,IAAwBA,gBAAgB,GAAG,EAA/C,EAAmD;IAC/CN,UAAAA,SAAS,GAAGO,WAAW,CAACD,gBAAgB,GAAG,CAApB,CAAvB;IACAL,UAAAA,UAAU,GAAGO,WAAW,CAACF,gBAAgB,GAAG,CAApB,CAAxB;IACH,SAHD,MAGO,IAAIA,gBAAgB,KAAK,GAAzB,EAA8B;IACjCN,UAAAA,SAAS,GAAGxB,EAAE,CAACd,QAAH,MAAiB,CAAjB,GAAqBc,EAAE,CAACd,QAAH,EAAjC;IACAuC,UAAAA,UAAU,GAAGzB,EAAE,CAACd,QAAH,MAAiB,CAAjB,GAAqBc,EAAE,CAACd,QAAH,EAAlC;IACH;IACJ;;IAED,UAAIc,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClBe,QAAAA,EAAE,CAACf,QAAH,GADe;IAElB;;IACD,UAAIe,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClBe,QAAAA,EAAE,CAACpB,QAAH,CAAY,CAAZ,EADe;;IAEf,YAAIoB,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClBe,UAAAA,EAAE,CAACpB,QAAH,CAAY,EAAZ,EADe;IAElB;IACJ;;IACD,UAAIoB,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClBe,QAAAA,EAAE,CAACX,OAAH,GADe;;IAEfW,QAAAA,EAAE,CAACX,OAAH,GAFe;IAGlB;;IACD,UAAIW,EAAE,CAACf,QAAH,EAAJ,EAAmB;IAAG;IAClB,YAAIgD,iBAAiB,GAAGjC,EAAE,CAACpB,QAAH,CAAY,EAAZ,CAAxB;IACA,YAAIsD,UAAU,GAAGlC,EAAE,CAACpB,QAAH,CAAY,EAAZ,CAAjB;IACA8C,QAAAA,SAAS,GAAG1B,EAAE,CAACf,QAAH,EAAZ,CAHe;;IAKf0C,QAAAA,OAAO,GAAGO,UAAV;IACAN,QAAAA,OAAO,GAAGK,iBAAiB,GAAG,CAA9B;IACAvmB,QAAAA,GAAG,GAAGimB,OAAO,GAAGC,OAAhB;IACH;IACJ;;IAED,QAAIO,QAAQ,GAAG,CAAf;;IACA,QAAIX,SAAS,KAAK,CAAd,IAAmBC,UAAU,KAAK,CAAtC,EAAyC;IACrCU,MAAAA,QAAQ,GAAGX,SAAS,GAAGC,UAAvB;IACH;;IAED,QAAIW,WAAW,GAAG,CAAlB;IAAA,QAAqBC,WAAW,GAAG,CAAnC;;IACA,QAAI9B,iBAAiB,KAAK,CAA1B,EAA6B;IACzB6B,MAAAA,WAAW,GAAG,CAAd;IACAC,MAAAA,WAAW,GAAG,IAAInB,mBAAlB;IACH,KAHD,MAGO;IACH,UAAIoB,MAAM,GAAI/B,iBAAiB,KAAK,CAAvB,GAA4B,CAA5B,GAAgC,CAA7C;IACA,UAAIgC,MAAM,GAAIhC,iBAAiB,KAAK,CAAvB,GAA4B,CAA5B,GAAgC,CAA7C;IACA6B,MAAAA,WAAW,GAAGE,MAAd;IACAD,MAAAA,WAAW,GAAGE,MAAM,IAAI,IAAIrB,mBAAR,CAApB;IACH;;IAED,QAAIsB,WAAW,GAAG,CAACxB,uBAAuB,GAAG,CAA3B,IAAgC,EAAlD;IACA,QAAIyB,YAAY,GAAG,CAAC,IAAIvB,mBAAL,KAA6B,CAACD,8BAA8B,GAAG,CAAlC,IAAuC,EAApE,CAAnB;IAEAuB,IAAAA,WAAW,IAAI,CAACrB,sBAAsB,GAAGC,uBAA1B,IAAqDgB,WAApE;IACAK,IAAAA,YAAY,IAAI,CAACpB,qBAAqB,GAAGC,wBAAzB,IAAqDe,WAArE;IAEA,QAAIK,aAAa,GAAGztB,IAAI,CAAC0tB,IAAL,CAAUH,WAAW,GAAGL,QAAxB,CAApB;IAEAnC,IAAAA,EAAE,CAAC1wB,OAAH;IACA0wB,IAAAA,EAAE,GAAG,IAAL,CA3KwB;;IA+KxB,WAAO;IACHG,MAAAA,cAAc,EAAEA,cADb;IAC8B;IACjCE,MAAAA,YAAY,EAAEA,YAFX;IAE0B;IAC7BK,MAAAA,SAAS,EAAEA,SAHR;IAGoB;IACvBK,MAAAA,UAAU,EAAEA,UAJT;IAKHP,MAAAA,aAAa,EAAEA,aALZ;IAK4B;IAC/BoC,MAAAA,oBAAoB,EAAEpD,WAAS,CAACqD,qBAAV,CAAgCrC,aAAhC,CANnB;IAQHsC,MAAAA,UAAU,EAAE;IACRC,QAAAA,KAAK,EAAErB,SADC;IAERhmB,QAAAA,GAAG,EAAEA,GAFG;IAGRkmB,QAAAA,OAAO,EAAEA,OAHD;IAIRD,QAAAA,OAAO,EAAEA;IAJD,OART;IAeHqB,MAAAA,SAAS,EAAE;IACPhuB,QAAAA,KAAK,EAAEwsB,SADA;IAEPpsB,QAAAA,MAAM,EAAEqsB;IAFD,OAfR;IAoBHwB,MAAAA,UAAU,EAAE;IACRjuB,QAAAA,KAAK,EAAEwtB,WADC;IAERptB,QAAAA,MAAM,EAAEqtB;IAFA,OApBT;IAyBHS,MAAAA,YAAY,EAAE;IACVluB,QAAAA,KAAK,EAAE0tB,aADG;IAEVttB,QAAAA,MAAM,EAAEqtB;IAFE;IAzBX,KAAP;IA8BH;;IAEsB,SAAhB7B,gBAAgB,CAACZ,EAAD,EAAKmD,KAAL,EAAY;IAC/B,QAAIC,UAAU,GAAG,CAAjB;IAAA,QAAoBC,UAAU,GAAG,CAAjC;IACA,QAAIC,WAAW,GAAG,CAAlB;;IACA,SAAK,IAAI5jB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyjB,KAApB,EAA2BzjB,CAAC,EAA5B,EAAgC;IAC5B,UAAI2jB,UAAU,KAAK,CAAnB,EAAsB;IAClBC,QAAAA,WAAW,GAAGtD,EAAE,CAACT,OAAH,EAAd;IACA8D,QAAAA,UAAU,GAAG,CAACD,UAAU,GAAGE,WAAb,GAA2B,GAA5B,IAAmC,GAAhD;IACH;;IACDF,MAAAA,UAAU,GAAIC,UAAU,KAAK,CAAhB,GAAqBD,UAArB,GAAkCC,UAA/C;IACH;IACJ,GAjPW;IAoPZ;IACA;IACA;IACA;;;IACuB,SAAhBjD,gBAAgB,CAACH,WAAD,EAAc;IACjC,YAAQA,WAAR;IACI,WAAK,EAAL;IACI,eAAO,UAAP;;IACJ,WAAK,EAAL;IACI,eAAO,MAAP;;IACJ,WAAK,EAAL;IACI,eAAO,UAAP;;IACJ,WAAK,GAAL;IACI,eAAO,MAAP;;IACJ,WAAK,GAAL;IACI,eAAO,QAAP;;IACJ,WAAK,GAAL;IACI,eAAO,SAAP;;IACJ,WAAK,GAAL;IACI,eAAO,SAAP;;IACJ;IACI,eAAO,SAAP;IAhBR;IAkBH;;IAEoB,SAAdK,cAAc,CAACJ,SAAD,EAAY;IAC7B,WAAO,CAACA,SAAS,GAAG,EAAb,EAAiB1kB,OAAjB,CAAyB,CAAzB,CAAP;IACH;;IAE2B,SAArBqnB,qBAAqB,CAACU,MAAD,EAAS;IACjC,YAAQA,MAAR;IACI,WAAK,GAAL;IACI,eAAO,OAAP;;IACJ,WAAK,GAAL;IACI,eAAO,OAAP;;IACJ,WAAK,GAAL;IACI,eAAO,OAAP;;IACJ;IACI,eAAO,SAAP;IARR;IAUH;;IA5RW;;ICjBT,SAASC,kCAAT,CAA4CnT,WAA5C,EAAyD;IAC5D,QAAM+L,IAAI,GAAG,EAAb;IACA,QAAM5Y,CAAC,GAAG,IAAIuP,QAAJ,CAAa1C,WAAW,CAACzhB,MAAzB,CAAV;IACA,MAAI60B,OAAO,GAAGjgB,CAAC,CAACwP,QAAF,CAAW,CAAX,CAAd,CAH4D;;IAI5D,MAAI0Q,UAAU,GAAGlgB,CAAC,CAACwP,QAAF,CAAW,CAAX,CAAjB,CAJ4D;;IAK5D,EAA2BxP,CAAC,CAACwP,QAAF,CAAW,CAAX,EALiC;;IAM5D,EAAexP,CAAC,CAACwP,QAAF,CAAW,CAAX,EAN6C;;IAQ5D,MAAIyQ,OAAO,KAAK,CAAZ,IAAiBC,UAAU,KAAK,CAApC,EAAuC;IACnC;IAEA;IACH;;IAED,QAAMC,eAAe,GAAG,CAACngB,CAAC,CAACwP,QAAF,CAAW,CAAX,IAAgB,CAAjB,IAAsB,CAA9C,CAd4D;;;IAgB5D,MAAI2Q,eAAe,KAAK,CAApB,IAAyBA,eAAe,KAAK,CAAjD,EAAoD;IAAG;IACnD;IACA;IACH;;IACD,MAAIC,QAAQ,GAAGpgB,CAAC,CAACwP,QAAF,CAAW,CAAX,IAAgB,EAA/B,CApB4D;;IAsB5D,MAAI4Q,QAAQ,KAAK,CAAjB,EAAoB;IAChB;IACA;IACH;;IAID,MAAI1H,MAAM,GAAG,CAAb;;IACA,OAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkkB,QAApB,EAA8BlkB,CAAC,EAA/B,EAAmC;IAC/B,QAAIG,GAAG,GAAG2D,CAAC,CAACqgB,SAAF,CAAY3H,MAAZ,EAAoB,KAApB,CAAV,CAD+B;;IAE/BA,IAAAA,MAAM,IAAI,CAAV;;IAEA,QAAIrc,GAAG,KAAK,CAAZ,EAAe;IACX;IACH,KAN8B;;;IAS/B,QAAIxO,GAAG,GAAG,IAAI6F,UAAJ,CAAemZ,WAAW,CAACzhB,MAA3B,EAAmCstB,MAAnC,EAA2Crc,GAA3C,CAAV;IACAqc,IAAAA,MAAM,IAAIrc,GAAV,CAV+B;IAY/B;IACA;IACA;;IACA,QAAI8Q,MAAM,GAAG6O,WAAS,CAACM,QAAV,CAAmBzuB,GAAnB,CAAb;;IACA,QAAIqO,CAAC,KAAK,CAAV,EAAa;IACT;IACA;IACH;;IAED0c,IAAAA,IAAI,CAACc,UAAL,GAAkBvM,MAAM,CAACsS,UAAP,CAAkBjuB,KAApC;IACAonB,IAAAA,IAAI,CAACe,WAAL,GAAmBxM,MAAM,CAACsS,UAAP,CAAkB7tB,MAArC;IACAgnB,IAAAA,IAAI,CAACK,YAAL,GAAoB9L,MAAM,CAACuS,YAAP,CAAoBluB,KAAxC;IACAonB,IAAAA,IAAI,CAACM,aAAL,GAAqB/L,MAAM,CAACuS,YAAP,CAAoB9tB,MAAzC;IAEAgnB,IAAAA,IAAI,CAAC0H,OAAL,GAAenT,MAAM,CAACwP,cAAtB;IACA/D,IAAAA,IAAI,CAAC2H,KAAL,GAAapT,MAAM,CAAC0P,YAApB;IACAjE,IAAAA,IAAI,CAAC4H,QAAL,GAAgBrT,MAAM,CAAC+P,SAAvB;IACAtE,IAAAA,IAAI,CAAC6H,YAAL,GAAoBtT,MAAM,CAAC6P,aAA3B;IACApE,IAAAA,IAAI,CAAC8H,QAAL,GAAgBvT,MAAM,CAACqS,SAAvB;IACA5G,IAAAA,IAAI,CAAC+H,SAAL,GAAiBxT,MAAM,CAACmS,UAAxB;;IAEA,QAAInS,MAAM,CAACmS,UAAP,CAAkBC,KAAlB,KAA4B,KAA5B,IACApS,MAAM,CAACmS,UAAP,CAAkBnB,OAAlB,KAA8B,CAD9B,IAEAhR,MAAM,CAACmS,UAAP,CAAkBlB,OAAlB,KAA8B,CAFlC,EAEqC;IACjCxF,MAAAA,IAAI,CAAC+H,SAAL,GAAiB,EAAjB;IACH;;IAED,QAAIvC,OAAO,GAAGxF,IAAI,CAAC+H,SAAL,CAAevC,OAA7B;IACA,QAAID,OAAO,GAAGvF,IAAI,CAAC+H,SAAL,CAAexC,OAA7B;IAEAvF,IAAAA,IAAI,CAACgI,iBAAL,GAAyBhI,IAAI,CAACC,SAAL,IAAkBuF,OAAO,GAAGD,OAA5B,CAAzB;IAEA,QAAI/mB,UAAU,GAAGvJ,GAAG,CAACwJ,QAAJ,CAAa,CAAb,EAAgB,CAAhB,CAAjB;IAEA,QAAIC,WAAW,GAAG,OAAlB;;IACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;IACxB,UAAIC,CAAC,GAAGJ,UAAU,CAACG,CAAD,CAAV,CAAcE,QAAd,CAAuB,EAAvB,CAAR;;IACA,UAAID,CAAC,CAAC/E,MAAF,GAAW,CAAf,EAAkB;IACd+E,QAAAA,CAAC,GAAG,MAAMA,CAAV;IACH;;IACDF,MAAAA,WAAW,IAAIE,CAAf;IACH,KArD8B;;;IAuD/BohB,IAAAA,IAAI,CAAClhB,KAAL,GAAaJ,WAAb;IACH;;IAED,MAAIupB,QAAQ,GAAG7gB,CAAC,CAACwP,QAAF,CAAWkJ,MAAX,CAAf,CAxF4D;;IAyF5D,MAAImI,QAAQ,KAAK,CAAjB,EAAoB;IAChB;IACA;IACH;;IAIDnI,EAAAA,MAAM;;IACN,OAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2kB,QAApB,EAA8B3kB,CAAC,EAA/B,EAAmC;IAC/B,QAAIG,GAAG,GAAG2D,CAAC,CAACqgB,SAAF,CAAY3H,MAAZ,EAAoB,KAApB,CAAV,CAD+B;;IAE/BA,IAAAA,MAAM,IAAI,CAAV;;IAEA,QAAIrc,GAAG,KAAK,CAAZ,EAAe;IACX;IACH;;IACD,IAAU,IAAI3I,UAAJ,CAAemZ,WAAW,CAACzhB,MAA3B,EAAmCstB,MAAnC,EAA2Crc,GAA3C,EAPqB;;IAU/Bqc,IAAAA,MAAM,IAAIrc,GAAV;IACH;;IAEDuc,EAAAA,IAAI,CAACQ,SAAL,GAAiB,KAAjB,CA9G4D;;IAiH5D,SAAOR,IAAP;IACH;;ICrHD,MAAMoD,SAAN,CAAgB;IACG,SAARM,QAAQ,CAAC9B,UAAD,EAAa;;IADhB;;ICGT,SAASsG,mCAAT,CAA6CjU,WAA7C,EAA0D;IAC7D,QAAM+L,IAAI,GAAG,EAAb;IACAA,EAAAA,IAAI,CAACQ,SAAL,GAAiB,MAAjB;IACA,MAAIV,MAAM,GAAG,KAAK,CAAlB,CAH6D;;IAK7D,QAAMqI,MAAM,GAAGlU,WAAW,CAAC6L,MAAD,CAA1B;;IAEA,MAAIqI,MAAM,KAAKpzB,aAAa,CAACC,GAA7B,EAAkC;IAC9B,WAAOgrB,IAAP;IACH;;IAEDF,EAAAA,MAAM,IAAI,CAAV;IACAA,EAAAA,MAAM,IAAI,CAAV;IACA,QAAMsI,SAAS,GAAGnU,WAAW,CAAC6L,MAAM,GAAG,CAAV,CAAX,GAA2B7L,WAAW,CAAC6L,MAAD,CAAX,IAAuB,CAApE;IACAA,EAAAA,MAAM,IAAI,CAAV;IACA,QAAMuI,OAAO,GAAGpU,WAAW,CAAC7Q,KAAZ,CAAkB0c,MAAlB,EAA2BA,MAAM,GAAGsI,SAApC,CAAhB;IACAjxB,EAAAA,OAAO,CAACrF,GAAR,CAAYgJ,UAAU,CAACwtB,IAAX,CAAgBD,OAAhB,CAAZ;IACAvI,EAAAA,MAAM,IAAIsI,SAAV;IAEA,QAAMG,MAAM,GAAGtU,WAAW,CAAC6L,MAAD,CAA1B;;IACA,MAAIyI,MAAM,KAAKxzB,aAAa,CAACE,GAA7B,EAAkC;IAC9B,WAAO+qB,IAAP;IACH;;IACDF,EAAAA,MAAM,IAAI,CAAV;IACAA,EAAAA,MAAM,IAAI,CAAV;IACA,QAAM0I,SAAS,GAAGvU,WAAW,CAAC6L,MAAM,GAAG,CAAV,CAAX,GAA2B7L,WAAW,CAAC6L,MAAD,CAAX,IAAuB,CAApE;IAEAA,EAAAA,MAAM,IAAI,CAAV;IACA,QAAM2I,OAAO,GAAGxU,WAAW,CAAC7Q,KAAZ,CAAkB0c,MAAlB,EAA2BA,MAAM,GAAG0I,SAApC,CAAhB;IACArxB,EAAAA,OAAO,CAACrF,GAAR,CAAYgJ,UAAU,CAACwtB,IAAX,CAAgBG,OAAhB,CAAZ;IAEA3I,EAAAA,MAAM,IAAI0I,SAAV;IAEA,QAAME,MAAM,GAAGzU,WAAW,CAAC6L,MAAD,CAA1B;;IAEA,MAAI4I,MAAM,KAAK3zB,aAAa,CAACG,GAA7B,EAAkC;IAC9B,WAAO8qB,IAAP;IACH;;IACDF,EAAAA,MAAM,IAAI,CAAV;IACAA,EAAAA,MAAM,IAAI,CAAV;IACA,QAAM6I,SAAS,GAAG1U,WAAW,CAAC6L,MAAM,GAAG,CAAV,CAAX,GAA2B7L,WAAW,CAAC6L,MAAD,CAAX,IAAuB,CAApE;IACAA,EAAAA,MAAM,IAAI,CAAV;IACA,QAAM8I,OAAO,GAAG3U,WAAW,CAAC7Q,KAAZ,CAAkB0c,MAAlB,EAA2BA,MAAM,GAAG6I,SAApC,CAAhB;IACAxxB,EAAAA,OAAO,CAACrF,GAAR,CAAYgJ,UAAU,CAACwtB,IAAX,CAAgBM,OAAhB,CAAZ;IAEA,MAAI3zB,GAAG,GAAG6F,UAAU,CAACwtB,IAAX,CAAgBG,OAAhB,CAAV;IACA,MAAIlU,MAAM,GAAG6O,SAAS,CAACM,QAAV,CAAmBzuB,GAAnB,CAAb;IAEA+qB,EAAAA,IAAI,CAACc,UAAL,GAAkBvM,MAAM,CAACsS,UAAP,CAAkBjuB,KAApC;IACAonB,EAAAA,IAAI,CAACe,WAAL,GAAmBxM,MAAM,CAACsS,UAAP,CAAkB7tB,MAArC;IACAgnB,EAAAA,IAAI,CAACK,YAAL,GAAoB9L,MAAM,CAACuS,YAAP,CAAoBluB,KAAxC;IACAonB,EAAAA,IAAI,CAACM,aAAL,GAAqB/L,MAAM,CAACuS,YAAP,CAAoB9tB,MAAzC;IAEAgnB,EAAAA,IAAI,CAAC0H,OAAL,GAAenT,MAAM,CAACwP,cAAtB;IACA/D,EAAAA,IAAI,CAAC2H,KAAL,GAAapT,MAAM,CAAC0P,YAApB;IACAjE,EAAAA,IAAI,CAAC4H,QAAL,GAAgBrT,MAAM,CAAC+P,SAAvB;IACAtE,EAAAA,IAAI,CAAC6H,YAAL,GAAoBtT,MAAM,CAAC6P,aAA3B;IACApE,EAAAA,IAAI,CAAC8H,QAAL,GAAgBvT,MAAM,CAACqS,SAAvB;IAEA,SAAO5G,IAAP;IACH;;ICxDc,MAAM6I,UAAN,SAAyBlmB,OAAzB,CAAiC;IAC5C7L,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB;IACA,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAKywB,KAAL,GAAa,IAAb;IACA,SAAKC,WAAL,GAAmB,IAAIhrB,MAAM,CAAC6B,WAAX,EAAnB;IACA,SAAKopB,YAAL,GAAoB,IAApB;IACA,SAAK/R,OAAL,GAAe,KAAf;IACA,SAAKC,UAAL,GAAkB,KAAlB;IACA,SAAK+R,UAAL,GAAkB,EAAlB;IACA,SAAKC,QAAL,GAAgB,KAAhB;IACA,SAAKhI,cAAL,GAAsB,CAAtB;IACA,SAAKiI,eAAL,GAAuB,KAAvB;IACA,SAAKnd,UAAL,GAAkB,EAAlB;IACA,SAAK2I,QAAL,GAAgB,KAAhB;IACA,SAAKtc,MAAL,CAAYzH,KAAZ,CAAkBsR,aAAlB,CAAgCohB,GAAhC,GAAsCvlB,MAAM,CAACvC,GAAP,CAAWC,eAAX,CAA2B,KAAKstB,WAAhC,CAAtC;IACA,UAAM;IACFv7B,MAAAA,KADE;IAEF4T,MAAAA,MAAM,EAAE;IAAC7J,QAAAA;IAAD;IAFN,QAGFc,MAHJ;IAMAd,IAAAA,KAAK,CAAC,KAAKwxB,WAAN,EAAmB,YAAnB,EAAiC,MAAM;IACxC,WAAKI,eAAL,GAAuB,IAAvB;IACA,WAAK9wB,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACgC,aAAxB;IACH,KAHI,CAAL;IAKAoE,IAAAA,KAAK,CAAC,KAAKwxB,WAAN,EAAmB,aAAnB,EAAkC,MAAM;IACzC,WAAK1wB,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACiC,cAAxB;IACH,KAFI,CAAL;IAIAiF,IAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,aAAjB,EAAgC,MAAhC;IACH;;IAEDoB,EAAAA,OAAO,GAAG;IACN,SAAKk2B,IAAL;IACA,SAAKpd,UAAL,GAAkB,EAAlB;IACA,SAAK+c,WAAL,GAAmB,IAAnB;IACA,SAAKI,eAAL,GAAuB,KAAvB;IACA,SAAKH,YAAL,GAAoB,IAApB;IACA,SAAK/R,OAAL,GAAe,KAAf;IACA,SAAKC,UAAL,GAAkB,KAAlB;IACA,SAAKgK,cAAL,GAAsB,CAAtB;IACA,SAAK+H,UAAL,GAAkB,IAAlB;IACA,SAAKC,QAAL,GAAgB,KAAhB;IACA,SAAK7nB,GAAL;IACA,SAAKhJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,aAAtB,EAAqC,SAArC;IACH;;IAEQ,MAALkd,KAAK,GAAG;IACR,WAAO,KAAK+Z,WAAL,CAAiBM,UAAxB;IACH;;IAEc,MAAXC,WAAW,GAAG;IACd,WAAO,KAAKta,KAAL,KAAe3Y,kBAAkB,CAAChC,IAAzC;IACH;;IAEgB,MAAbk1B,aAAa,GAAG;IAChB,WAAO,KAAKva,KAAL,KAAe3Y,kBAAkB,CAACE,MAAzC;IACH;;IAEe,MAAZizB,YAAY,GAAG;IACf,WAAO,KAAKxa,KAAL,KAAe3Y,kBAAkB,CAACC,KAAzC;IACH;;IAEW,MAAR4pB,QAAQ,GAAG;IACX,WAAO,KAAK6I,WAAL,CAAiB7I,QAAxB;IACH;;IAEW,MAARA,QAAQ,CAACA,QAAD,EAAW;IACnB,SAAK6I,WAAL,CAAiB7I,QAAjB,GAA4BA,QAA5B;IACH;;IAEDlM,EAAAA,WAAW,CAACgB,OAAD,EAAUtL,EAAV,EAAcoN,QAAd,EAAwB;IAC/B,UAAMze,MAAM,GAAG,KAAKA,MAApB;;IAEA,QAAI,CAAC,KAAK4e,OAAV,EAAmB;IACf,UAAIH,QAAQ,IAAI9B,OAAO,CAAC,CAAD,CAAP,KAAe,CAA/B,EAAkC;IAC9B,cAAM0C,UAAU,GAAI1C,OAAO,CAAC,CAAD,CAAP,GAAa,IAAjC;IACA3c,QAAAA,MAAM,CAACzH,KAAP,CAAauX,eAAb,CAA6B;IACzBC,UAAAA,WAAW,EAAEsP;IADY,SAA7B,EAF8B;;IAO9B,YAAIA,UAAU,KAAK/iB,cAAc,CAACE,IAAlC,EAAwC;IACpC,eAAKoM,IAAL,CAAUrN,YAAY,CAACK,yBAAvB;IACA;IACH;;IACD,YAAI,CAACoE,MAAM,CAACwX,MAAP,CAActP,WAAnB,EAAgC;IAC5BlI,UAAAA,MAAM,CAACwX,MAAP,CAActP,WAAd,GAA4BzE,GAAG,EAA/B;IACH;;IAED,aAAK2tB,0BAAL,CAAgCzU,OAAhC,EAAyCtL,EAAzC,EAA6CoN,QAA7C,EAAuDY,UAAvD;;IACA,aAAKT,OAAL,GAAe,IAAf;IACH;IACJ,KAnBD,MAmBO;IACH,WAAKyS,YAAL,CAAkB1U,OAAlB,EAA2BtL,EAA3B,EAA+BoN,QAA/B;IACH;IACJ;;IAED5B,EAAAA,SAAS,GAAG;IACR,UAAM9G,UAAU,GAAG,KAAKpC,UAAL,CAAgBqC,KAAhB,EAAnB;;IACA,QAAID,UAAJ,EAAgB;IACZ,WAAKsb,YAAL,CAAkBtb,UAAU,CAAC4G,OAA7B,EAAsC5G,UAAU,CAAC1E,EAAjD,EAAqD0E,UAAU,CAAC0I,QAAhE;IACH;IACJ;;IAGD2S,EAAAA,0BAA0B,CAACzU,OAAD,EAAUtL,EAAV,EAAcoN,QAAd,EAAwBY,UAAxB,EAAoC;IAC1D,QAAIrU,IAAI,GAAG2R,OAAO,CAAC5R,KAAR,CAAc,CAAd,CAAX;IACA,QAAImR,MAAM,GAAG,EAAb;;IAEA,QAAImD,UAAU,KAAK/iB,cAAc,CAACC,IAAlC,EAAwC;IACpC2f,MAAAA,MAAM,GAAG6S,kCAAkC,CAAC/jB,IAAD,CAA3C;IACH,KAFD,MAEO,IAAIqU,UAAU,KAAK/iB,cAAc,CAACE,IAAlC,EAAwC;IAC3C0f,MAAAA,MAAM,GAAG2T,mCAAmC,CAAC7kB,IAAD,CAA5C;IACH;;IACD,UAAMsmB,QAAQ,GAAG;IACbvJ,MAAAA,EAAE,EAAE,CADS;IACN;IACP1lB,MAAAA,IAAI,EAAE,OAFO;IAGbulB,MAAAA,SAAS,EAAE,IAHE;IAIbC,MAAAA,QAAQ,EAAE,CAJG;IAKbW,MAAAA,IAAI,EAAExd,IALO;IAMbyd,MAAAA,UAAU,EAAEvM,MAAM,CAACuM,UANN;IAObC,MAAAA,WAAW,EAAExM,MAAM,CAACwM,WAPP;IAQbP,MAAAA,SAAS,EAAEjM,MAAM,CAACiM;IARL,KAAjB,CAT0D;;IAoB1D,UAAMoJ,OAAO,GAAGtN,KAAG,CAACyD,mBAAJ,CAAwB4J,QAAxB,CAAhB;IACA,SAAKb,KAAL,GAAa,IAAb;IACA,SAAKe,YAAL,CAAkBD,OAAO,CAACp3B,MAA1B;IACA,SAAK0uB,cAAL,GAAsB,CAAtB;IACA,SAAK+H,UAAL,GAAkB,IAAlB;IACA,SAAKC,QAAL,GAAgB,KAAhB;IACH,GAtI2C;;;IAyI5CQ,EAAAA,YAAY,CAAC1U,OAAD,EAAUtL,EAAV,EAAcoN,QAAd,EAAwB;IAChC,UAAMze,MAAM,GAAG,KAAKA,MAApB;IACA,QAAI4b,WAAW,GAAGe,OAAO,CAAC5R,KAAR,CAAc,CAAd,CAAlB;IACA,QAAI0mB,KAAK,GAAG7V,WAAW,CAAC5D,UAAxB;IACA,QAAIoR,GAAG,GAAG,CAAV;IACA,QAAIsI,GAAG,GAAGrgB,EAAV,CALgC;;IAOhC,UAAM0B,MAAM,GAAG/S,MAAM,CAACzH,KAAP,CAAasR,aAA5B;;IAEA,QAAIkJ,MAAM,CAAC4e,QAAP,CAAgBnwB,MAAhB,GAAyB,CAA7B,EAAgC;IAC5B,WAAKowB,YAAL,CAAkB7e,MAAM,CAAC4e,QAAP,CAAgBt3B,KAAhB,CAAsB,CAAtB,CAAlB,EAA4C0Y,MAAM,CAAC4e,QAAP,CAAgBE,GAAhB,CAAoB,CAApB,CAA5C;IACA,WAAKhB,QAAL,GAAgB,KAAhB;IACH;;IACD,QAAI,KAAKvU,QAAL,IAAiBoV,GAAG,GAAG,KAAKd,UAAL,CAAgBc,GAAtB,GAA4B,IAAjD,EAAuD;IACnD,WAAKpV,QAAL,GAAgB,KAAhB;IACA,WAAKsU,UAAL,GAAkB,EAAlB;IACH,KAHD,MAGO,IAAI,KAAKA,UAAL,IAAmBc,GAAG,GAAG,KAAKd,UAAL,CAAgBc,GAA7C,EAAkD;IACrD;IACA,UAAII,SAAS,GAAG,IAAI,KAAKlB,UAAL,CAAgBvrB,IAApC;IACA,UAAI0sB,OAAO,GAAG,IAAItvB,UAAJ,CAAeqvB,SAAf,CAAd;IACAC,MAAAA,OAAO,CAAC,CAAD,CAAP,GAAaD,SAAS,KAAK,EAAd,GAAmB,GAAhC;IACAC,MAAAA,OAAO,CAAC,CAAD,CAAP,GAAaD,SAAS,KAAK,EAAd,GAAmB,GAAhC;IACAC,MAAAA,OAAO,CAAC,CAAD,CAAP,GAAaD,SAAS,KAAK,CAAd,GAAkB,GAA/B;IACAC,MAAAA,OAAO,CAAC,CAAD,CAAP,GAAaD,SAAS,GAAG,GAAzB;IACAC,MAAAA,OAAO,CAAC9T,GAAR,CAAYgG,KAAG,CAACC,KAAJ,CAAUU,IAAtB,EAA4B,CAA5B;IACAmN,MAAAA,OAAO,CAAC9T,GAAR,CAAY,KAAK2S,UAAL,CAAgB5lB,IAA5B,EAAkC,CAAlC;IAEA,WAAK4lB,UAAL,CAAgB/I,QAAhB,GAA2B6J,GAAG,GAAG,KAAKd,UAAL,CAAgBc,GAAjD,CAXqD;;IAarD,UAAIM,OAAO,GAAG/N,KAAG,CAACgB,IAAJ,CAAS,KAAK2L,UAAd,EAA0B,KAAKA,UAAL,CAAgBc,GAA1C,CAAd;IACA,UAAIxqB,MAAM,GAAG,IAAIzE,UAAJ,CAAeuvB,OAAO,CAACha,UAAR,GAAqB+Z,OAAO,CAAC/Z,UAA5C,CAAb;IACA9Q,MAAAA,MAAM,CAAC+W,GAAP,CAAW+T,OAAX,EAAoB,CAApB;IACA9qB,MAAAA,MAAM,CAAC+W,GAAP,CAAW8T,OAAX,EAAoBC,OAAO,CAACha,UAA5B,EAhBqD;;IAkBrD,WAAKwZ,YAAL,CAAkBtqB,MAAM,CAAC/M,MAAzB;IACA6F,MAAAA,MAAM,CAACmb,YAAP;IACAnb,MAAAA,MAAM,CAACob,WAAP,CAAmB;IAACnU,QAAAA,GAAG,EAAE,IAAN;IAAYoK,QAAAA,EAAE,EAAEA,EAAhB;IAAoBgK,QAAAA,GAAG,EAAErb,MAAM,CAACuX,KAAP,CAAa+D;IAAtC,OAAnB;;IACA,UAAI,CAACtb,MAAM,CAACwX,MAAP,CAAcrP,UAAnB,EAA+B;IAC3BnI,QAAAA,MAAM,CAACwX,MAAP,CAAcrP,UAAd,GAA2B1E,GAAG,EAA9B;IACAzD,QAAAA,MAAM,CAACub,uBAAP;IACH;IACJ,KAzBM,MAyBA;IACHvb,MAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,aAAjB,EAAgC,sCAAhC;IACA,WAAKo3B,QAAL,GAAgB,KAAhB;IACA,WAAKD,UAAL,GAAkB,EAAlB;IACH;;IAED,SAAKA,UAAL,CAAgB7I,EAAhB,GAAqB,CAArB;IACA,SAAK6I,UAAL,CAAgB/H,cAAhB,GAAiC,EAAE,KAAKA,cAAxC;IACA,SAAK+H,UAAL,CAAgBvrB,IAAhB,GAAuBosB,KAAvB;IACA,SAAKb,UAAL,CAAgBc,GAAhB,GAAsBA,GAAtB;IACA,SAAKd,UAAL,CAAgBxH,GAAhB,GAAsBA,GAAtB;IACA,SAAKwH,UAAL,CAAgBqB,UAAhB,GAA6BxT,QAA7B;IACA,SAAKmS,UAAL,CAAgB5lB,IAAhB,GAAuB4Q,WAAvB,CArDgC;;IAuDhC,SAAKgV,UAAL,CAAgB9H,KAAhB,GAAwB;IACpBC,MAAAA,SAAS,EAAE,CADS;IAEpBC,MAAAA,SAAS,EAAEvK,QAAQ,GAAG,CAAH,GAAO,CAFN;IAGpBwK,MAAAA,YAAY,EAAExK,QAAQ,GAAG,CAAH,GAAO,CAHT;IAIpByK,MAAAA,aAAa,EAAE,CAJK;IAKpBG,MAAAA,SAAS,EAAE5K,QAAQ,GAAG,CAAH,GAAO;IALN,KAAxB,CAvDgC;;IAgEhC,QAAI,CAAC,KAAKoS,QAAN,IAAkB9d,MAAM,CAAC4e,QAAP,CAAgBnwB,MAAhB,KAA2B,CAAjD,EAAoD;IAChDxB,MAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,aAAjB,EAAgC,mBAAhC;IACA,WAAKo3B,QAAL,GAAgB,IAAhB;IACA9d,MAAAA,MAAM,CAAC0D,WAAP,GAAqB1D,MAAM,CAAC4e,QAAP,CAAgBE,GAAhB,CAAoB,CAApB,CAArB;IACH;;IAED,QAAI,CAAC,KAAKhT,UAAN,IAAoB9L,MAAM,CAACE,UAAP,GAAoB,CAAxC,IAA6CF,MAAM,CAACG,WAAP,GAAqB,CAAtE,EAAyE;IACrElT,MAAAA,MAAM,CAAC7K,KAAP,CAAasE,GAAb,CAAiB,aAAjB,EAAiC,oBAAmBsZ,MAAM,CAACE,UAAW,IAAGF,MAAM,CAACG,WAAY,EAA5F;IACAlT,MAAAA,MAAM,CAACzH,KAAP,CAAauX,eAAb,CAA6B;IACzBvP,QAAAA,KAAK,EAAEwS,MAAM,CAACE,UADW;IAEzBtS,QAAAA,MAAM,EAAEoS,MAAM,CAACG;IAFU,OAA7B;IAIAlT,MAAAA,MAAM,CAACzH,KAAP,CAAa4Y,kBAAb;IACA,WAAK0N,UAAL,GAAkB,IAAlB;IACH;IACJ;;IAED2S,EAAAA,YAAY,CAACr3B,MAAD,EAAS;IACjB,UAAM;IACFhF,MAAAA,KADE;IAEF4T,MAAAA,MAAM,EAAE;IAAC7J,QAAAA;IAAD;IAFN,QAGF,KAAKc,MAHT;;IAKA,QAAI,KAAK2wB,YAAL,KAAsB,IAA1B,EAAgC;IAC5B,WAAKA,YAAL,GAAoB,KAAKD,WAAL,CAAiBwB,eAAjB,CAAiCr0B,UAAU,CAACC,GAA5C,CAApB;IACAoB,MAAAA,KAAK,CAAC,KAAKyxB,YAAN,EAAoB,OAApB,EAA8Bj3B,KAAD,IAAW;IACzC,aAAKsG,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACkC,oBAAxB,EAA8CtB,KAA9C,EADyC;IAG5C,OAHI,CAAL;IAIH;;IAED,QAAI,KAAKi3B,YAAL,CAAkBwB,QAAlB,KAA+B,KAA/B,IAAwC,KAAKlB,WAAjD,EAA8D;IAC1D,WAAKN,YAAL,CAAkBa,YAAlB,CAA+Br3B,MAA/B;IACA;IACH;;IAED,QAAI,KAAK+2B,aAAT,EAAwB;IACpB,WAAKlxB,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACkC,oBAAxB,EAA8C,+DAA9C;IACH,KAFD,MAEO,IAAI,KAAKm2B,YAAT,EAAuB;IAC1B,WAAKnxB,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACkC,oBAAxB,EAA8C,uBAA9C;IACH,KAFM,MAEA;IACH,UAAI,KAAK21B,YAAL,CAAkBwB,QAAlB,KAA+B,IAAnC,EAAyC;IACrC,aAAKnyB,MAAL,CAAY4I,IAAZ,CAAiB9P,MAAM,CAACmC,mBAAxB,EADqC;IAGxC;IACJ;IACJ;;IAED81B,EAAAA,IAAI,GAAG;IACH,QAAI,KAAKE,WAAT,EAAsB;IAClB,UAAI,KAAKN,YAAT,EAAuB;IACnB,aAAKA,YAAL,CAAkBtZ,KAAlB;IACH;IACJ;;IACD,SAAK+a,WAAL;IACH;;IAEDC,EAAAA,gBAAgB,CAAChc,IAAD,EAAO;IACnB,UAAM9d,KAAK,GAAG,KAAKyH,MAAL,CAAYzH,KAA1B;IACA,UAAMwa,MAAM,GAAGxa,KAAK,CAACsR,aAArB;IACA,SAAKyS,QAAL,GAAgBjG,IAAhB;;IACA,QAAItD,MAAM,CAAC4e,QAAP,CAAgBnwB,MAAhB,GAAyB,CAA7B,EAAgC;IAC5B,UAAIuR,MAAM,CAAC4e,QAAP,CAAgBE,GAAhB,CAAoB,CAApB,IAAyB9e,MAAM,CAAC0D,WAAhC,GAA8C,CAAlD,EAAqD;IACjD1D,QAAAA,MAAM,CAAC0D,WAAP,GAAqB1D,MAAM,CAAC4e,QAAP,CAAgBE,GAAhB,CAAoB,CAApB,CAArB;IACH;IACJ;IACJ;;IAGDD,EAAAA,YAAY,CAACv3B,KAAD,EAAQw3B,GAAR,EAAa;IAErB,QAAI,KAAKZ,WAAL,IAAoB,KAAKN,YAAL,CAAkBwB,QAAlB,KAA+B,KAAvD,EAA8D;IAC1D,UAAI;IACA,aAAKxB,YAAL,CAAkBxmB,MAAlB,CAAyB9P,KAAzB,EAAgCw3B,GAAhC;IACH,OAFD,CAEE,OAAOhwB,CAAP,EAAU;IACR/C,QAAAA,OAAO,CAACpF,KAAR,CAAcmI,CAAd;IACH;IACJ;IACJ;;IAEDuwB,EAAAA,WAAW,GAAG;IACV,QAAI,KAAKnB,WAAT,EAAsB;IAClB,WAAKP,WAAL,CAAiB0B,WAAjB;IACH;IACJ;;IA7R2C;;ICPhD;IAEA,MAAME,IAAI,GAAG,qyOAAb;IACA,MAAMrO,GAAG,GAAG,o6JAAZ;;IAIA,MACIsO,MAAM,GAAG,MACL,OAAO3sB,SAAP,KAAqB,WAArB,IACAZ,UAAU,CACN,CACI,KACA,CAAC,oEAAoEwtB,IAApE,CACG5sB,SAAS,CAACC,SADb,KAEI,CAAC,CAAD,EAAI,EAAJ,CAFL,EAEc,CAFd,CAFJ,EAMKvD,OANL,CAMa,WANb,EAM0B,KAN1B,EAOKA,OAPL,CAOa,GAPb,EAOkB,GAPlB,EAQKA,OARL,CAQa,GARb,EAQkB,EARlB,CADM,CAAV,GAUI,EAXJ,IAYA,CAACoD,MAAM,CAAC+sB,QAdhB;;;IAiBA,MAAMC,cAAc,GAAG,MAAM,cAAc9sB,SAA3C;;IAEe,MAAM+sB,OAAN,CAAc;IACzBl0B,EAAAA,WAAW,CAACuB,MAAD,EAAS;IAChB,SAAKA,MAAL,GAAcA,MAAd;IACA,SAAK8Z,OAAL,GAAe,KAAf;;IACA,QAAI4Y,cAAc,EAAlB,EAAsB;IAClB,WAAKE,SAAL,GAAiB,IAAjB;;IACA,YAAMC,sBAAsB,GAAG,MAAM;IACjC,YAAI,KAAKD,SAAL,KAAmB,IAAnB,IAA2B5vB,QAAQ,CAAC8gB,eAAT,KAA6B,SAA5D,EAAuE;IACnE,eAAKgP,MAAL;IACH;IACJ,OAJD;;IAKA9vB,MAAAA,QAAQ,CAACrD,gBAAT,CAA0B,kBAA1B,EAA8CkzB,sBAA9C;IACA7vB,MAAAA,QAAQ,CAACrD,gBAAT,CAA0B,kBAA1B,EAA8CkzB,sBAA9C;IACH,KATD,MASO,IAAIN,MAAM,EAAV,EAAc;IACjB,WAAKQ,YAAL,GAAoB,IAApB;IACH,KAFM,MAEA;IACH;IACA,WAAKC,YAAL,GAAoBhwB,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAApB;IAEA,WAAK+vB,YAAL,CAAkB9S,YAAlB,CAA+B,OAA/B,EAAwC,UAAxC;IACA,WAAK8S,YAAL,CAAkB9S,YAAlB,CAA+B,aAA/B,EAA8C,EAA9C;;IAEA,WAAK+S,iBAAL,CAAuB,KAAKD,YAA5B,EAA0C,MAA1C,EAAkDV,IAAlD;;IACA,WAAKW,iBAAL,CAAuB,KAAKD,YAA5B,EAA0C,KAA1C,EAAiD/O,GAAjD;;IAEA,WAAK+O,YAAL,CAAkBrzB,gBAAlB,CAAmC,gBAAnC,EAAqD,MAAM;IACvD,YAAI,KAAKqzB,YAAL,CAAkBnL,QAAlB,IAA8B,CAAlC,EAAqC;IACjC;IACA,eAAKmL,YAAL,CAAkB9S,YAAlB,CAA+B,MAA/B,EAAuC,EAAvC;IACH,SAHD,MAGO;IACH;IACA,eAAK8S,YAAL,CAAkBrzB,gBAAlB,CAAmC,YAAnC,EAAiD,MAAM;IACnD,gBAAI,KAAKqzB,YAAL,CAAkBvc,WAAlB,GAAgC,GAApC,EAAyC;IACrC,mBAAKuc,YAAL,CAAkBvc,WAAlB,GAAgCjW,IAAI,CAAC0yB,MAAL,EAAhC;IACH;IACJ,WAJD;IAKH;IACJ,OAZD;IAaH;IACJ;;IAEDD,EAAAA,iBAAiB,CAACzuB,OAAD,EAAUnC,IAAV,EAAgB8wB,OAAhB,EAAyB;IACtC,QAAI/e,MAAM,GAAGpR,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;IACAmR,IAAAA,MAAM,CAAC6W,GAAP,GAAakI,OAAb;IACA/e,IAAAA,MAAM,CAAC/R,IAAP,GAAe,SAAQA,IAAK,EAA5B;IACAmC,IAAAA,OAAO,CAAC6L,WAAR,CAAoB+D,MAApB;IACH;;IAEY,MAATgf,SAAS,GAAG;IACZ,WAAO,KAAKtZ,OAAZ;IACH;;IAEDgZ,EAAAA,MAAM,GAAG;IACL,UAAM39B,KAAK,GAAG,KAAK6K,MAAL,CAAY7K,KAA1B;;IACA,QAAIu9B,cAAc,EAAlB,EAAsB;IAClB,aAAO9sB,SAAS,CAACytB,QAAV,CACFnqB,OADE,CACM,QADN,EAEFC,IAFE,CAEIkqB,QAAD,IAAc;IAChB,aAAKT,SAAL,GAAiBS,QAAjB;IACA,aAAKvZ,OAAL,GAAe,IAAf;IACA3kB,QAAAA,KAAK,CAACsE,GAAN,CAAU,UAAV,EAAsB,mBAAtB;;IACA,aAAKm5B,SAAL,CAAejzB,gBAAf,CAAgC,SAAhC,EAA2C,MAAM;IAC7C;IACA;IACA;IACAxK,UAAAA,KAAK,CAACsE,GAAN,CAAU,UAAV,EAAsB,qBAAtB;IACH,SALD;IAMH,OAZE,EAaF2P,KAbE,CAaKkqB,GAAD,IAAS;IACZ,aAAKxZ,OAAL,GAAe,KAAf;IACA3kB,QAAAA,KAAK,CAACuE,KAAN,CAAY,UAAZ,EAAyB,GAAE45B,GAAG,CAAC30B,IAAK,KAAI20B,GAAG,CAAC5a,OAAQ,EAApD;IACA,cAAM4a,GAAN;IACH,OAjBE,CAAP;IAkBH,KAnBD,MAmBO,IAAIf,MAAM,EAAV,EAAc;IACjB,WAAKgB,OAAL;IACA,WAAKR,YAAL,GAAoBrtB,MAAM,CAACyU,WAAP,CAAmB,MAAM;IACzC,YAAI,CAACnX,QAAQ,CAACwwB,MAAd,EAAsB;IAClB9tB,UAAAA,MAAM,CAAC+tB,QAAP,CAAgBvwB,IAAhB,GAAuBwC,MAAM,CAAC+tB,QAAP,CAAgBvwB,IAAhB,CAAqBhB,KAArB,CAA2B,GAA3B,EAAgC,CAAhC,CAAvB;IACAwD,UAAAA,MAAM,CAACpC,UAAP,CAAkBoC,MAAM,CAACqrB,IAAzB,EAA+B,CAA/B;IACH;IACJ,OALmB,EAKjB,KALiB,CAApB;IAMA,WAAKjX,OAAL,GAAe,IAAf;IACA,aAAO4Z,OAAO,CAACC,OAAR,EAAP;IACH,KAVM,MAUA;IACH,UAAIC,WAAW,GAAG,KAAKZ,YAAL,CAAkB38B,IAAlB,EAAlB;IACA,aAAOu9B,WAAW,CACbzqB,IADE,CACIuO,GAAD,IAAS;IACX,aAAKoC,OAAL,GAAe,IAAf;IACA,eAAOpC,GAAP;IACH,OAJE,EAKFtO,KALE,CAKKkqB,GAAD,IAAS;IACZ,aAAKxZ,OAAL,GAAe,KAAf;IACA,cAAMwZ,GAAN;IACH,OARE,CAAP;IASH;IACJ;;IAEDC,EAAAA,OAAO,GAAG;IACN,UAAMp+B,KAAK,GAAG,KAAK6K,MAAL,CAAY7K,KAA1B;;IACA,QAAIu9B,cAAc,EAAlB,EAAsB;IAClB,UAAI,KAAKE,SAAT,EAAoB;IAChB,aAAKA,SAAL,CAAeiB,OAAf;IACH;;IACD,WAAKjB,SAAL,GAAiB,IAAjB;IACH,KALD,MAKO,IAAIL,MAAM,EAAV,EAAc;IACjB,UAAI,KAAKQ,YAAT,EAAuB;IACnB59B,QAAAA,KAAK,CAAC4J,IAAN,CAAW,UAAX,EAAuB,6CAAvB;IAEA2G,QAAAA,MAAM,CAAC6U,aAAP,CAAqB,KAAKwY,YAA1B;IACA,aAAKA,YAAL,GAAoB,IAApB;IACH;IACJ,KAPM,MAOA;IACH,WAAKC,YAAL,CAAkB95B,KAAlB;IACH;;IACD,SAAK4gB,OAAL,GAAe,KAAf;IACH;;IAnHwB;;ICId,MAAMga,MAAN,SAAqBxpB,OAArB,CAA6B;IACxC7L,EAAAA,WAAW,CAACs1B,SAAD,EAAY7e,OAAZ,EAAqB;IAC5B;IACA,SAAK7U,UAAL,GAAkB0zB,SAAlB;IACA,SAAKn1B,IAAL,GAAYqB,MAAM,CAAC+zB,MAAP,CAAc,EAAd,EAAkBl/B,sBAAlB,EAA0CogB,OAA1C,CAAZ;IACA,SAAK/f,KAAL,GAAa,IAAIqJ,KAAJ,CAAU,IAAV,CAAb;;IAGA,QAAI,KAAKI,IAAL,CAAUzH,MAAd,EAAsB;IAClB,WAAKyH,IAAL,CAAUzH,MAAV,GAAmB6O,UAAU,EAA7B;IACH;;IAED,QAAI,KAAKpH,IAAL,CAAUxH,MAAd,EAAsB;IAClB,WAAKwH,IAAL,CAAUxH,MAAV,GAAmBkQ,UAAU,EAA7B;IACH,KAb2B;;;IAgB5B,QAAI,KAAK1I,IAAL,CAAUxH,MAAd,EAAsB;IAClB,UAAI,KAAKwH,IAAL,CAAUzH,MAAd,EAAsB;IAClB,aAAKhC,KAAL,CAAWsE,GAAX,CAAe,QAAf,EAAyB,wBAAzB;IACH;;IAED,UAAI,CAAC,KAAKmF,IAAL,CAAU7H,gBAAf,EAAiC;IAC7B,aAAK5B,KAAL,CAAWsE,GAAX,CAAe,QAAf,EAAyB,kCAAzB;IACH;;IAED,WAAKmF,IAAL,CAAUzH,MAAV,GAAmB,KAAnB;IACA,WAAKyH,IAAL,CAAU7H,gBAAV,GAA6B,IAA7B;IACH,KAXD,MAWO,IAAI,KAAK6H,IAAL,CAAUzH,MAAd,EAAsB;;IAK7B,QAAI,CAAC,KAAKyH,IAAL,CAAU7H,gBAAf,EAAiC;IAC7B,UAAI,CAACmK,kBAAkB,EAAvB,EAA2B;IACvB,aAAKtC,IAAL,CAAU7H,gBAAV,GAA6B,IAA7B;IACA,aAAK6H,IAAL,CAAUvH,YAAV,GAAyB,KAAzB;IACH,OAHD,MAGO;IACH,aAAKuH,IAAL,CAAUvH,YAAV,GAAyB,IAAzB;IACH;IACJ;;IAED,QAAI,CAAC,KAAKuH,IAAL,CAAU5I,QAAf,EAAyB;IACrB,WAAK4I,IAAL,CAAU1I,WAAV,CAAsBI,KAAtB,GAA8B,KAA9B;IACH;;IAED,SAAKsI,IAAL,CAAUnI,UAAV,GAAuB,KAAKw9B,WAAL,EAAvB,CA7C4B;;IA+C5B,SAAKC,QAAL,GAAgB,KAAhB;IACA,SAAKC,QAAL,GAAgB,KAAhB;IACA,SAAKC,UAAL,GAAkB,KAAlB,CAjD4B;;IAoD5B,SAAKC,kBAAL,GAA0B,IAA1B;IACA,SAAKC,oBAAL,GAA4B,IAA5B,CArD4B;;IAwD5B,SAAKC,aAAL,GAAqB,IAArB;IACA,SAAKxQ,0BAAL,GAAkC,KAAlC;IACA,SAAKyQ,MAAL,GAAc;IACVnZ,MAAAA,GAAG,EAAE,CADK;IACF;IACRpU,MAAAA,GAAG,EAAE,CAFK;IAEF;IACR2W,MAAAA,IAAI,EAAE,CAHI;IAGD;IACTC,MAAAA,IAAI,EAAE,CAJI;IAID;IACTxM,MAAAA,EAAE,EAAE,CALM;;IAAA,KAAd,CA1D4B;;IAmE5B,SAAKmG,MAAL,GAAc5P,aAAa,EAA3B,CAnE4B;;IAsE5B,SAAK6sB,eAAL,GAAuB,CAAvB;IACA,SAAKC,eAAL,GAAuB,CAAvB;IAEAnR,IAAAA,UAAQ,CAAC,IAAD,CAAR;IAEA,SAAKxa,MAAL,GAAc,IAAI/J,MAAJ,CAAW,IAAX,CAAd;IACA,SAAKzG,KAAL,GAAa,IAAI+a,KAAJ,CAAU,IAAV,CAAb;;IAEA,QAAI,KAAK1U,IAAL,CAAU5I,QAAd,EAAwB;IACpB,WAAKM,KAAL,GAAa,IAAIygB,KAAJ,CAAU,IAAV,CAAb;IACH;;IACD,SAAKiD,QAAL,GAAgB,IAAIQ,QAAJ,CAAa,IAAb,CAAhB;;IAEA,QAAI,CAAC,KAAKma,kBAAL,EAAL,EAAgC;IAC5B,WAAKja,aAAL,GAAqB,IAAID,aAAJ,CAAkB,IAAlB,CAArB;IACH,KAFD,MAEO;IACH,WAAKxR,MAAL,GAAc,IAAd;IACH;;IAED,SAAKwQ,MAAL,GAAc,IAAd;IACA,SAAKlC,KAAL,GAAa,IAAb;;IAEA,QAAI,KAAK3Y,IAAL,CAAUzH,MAAd,EAAsB;IAClB,WAAK4lB,gBAAL,GAAwB,IAAI4B,gBAAJ,CAAqB,IAArB,CAAxB;IACH;;IAED,QAAI,KAAK/f,IAAL,CAAUxH,MAAd,EAAsB;IAClB,WAAK4lB,UAAL,GAAkB,IAAIwT,UAAJ,CAAe,IAAf,CAAlB;IACH,KAlG2B;;;IAqG5B,SAAK1Q,OAAL,GAAe,IAAIsD,OAAJ,CAAY,IAAZ,CAAf;IAEA,SAAKttB,YAAL,GAAoB,IAAI68B,OAAJ,CAAY,IAAZ,CAApB;IAGA5pB,IAAAA,QAAM,CAAC,IAAD,CAAN;IACAua,IAAAA,QAAQ,CAAC,IAAD,CAAR;;IAGA,QAAI,KAAK1kB,IAAL,CAAUzH,MAAd,EAAsB;IAClB,WAAKhC,KAAL,CAAWsE,GAAX,CAAe,QAAf,EAAyB,SAAzB;IACH;;IAED,QAAI,KAAKmF,IAAL,CAAUxH,MAAd,EAAsB;IAClB,WAAKjC,KAAL,CAAWsE,GAAX,CAAe,QAAf,EAAyB,SAAzB;IACH;;IAED,QAAI,KAAKmF,IAAL,CAAUvH,YAAd,EAA4B;IACxB,WAAKlC,KAAL,CAAWsE,GAAX,CAAe,QAAf,EAAyB,eAAzB;IACH;;IAED,SAAKtE,KAAL,CAAWsE,GAAX,CAAe,gBAAf,EAAiC,KAAKmF,IAAtC;IACH;;IAGD/D,EAAAA,OAAO,GAAG;IACN,SAAKq5B,QAAL,GAAgB,KAAhB;IACA,SAAKC,QAAL,GAAgB,KAAhB;IACA,SAAKC,UAAL,GAAkB,KAAlB;IAEA,SAAK5c,MAAL,GAAc5P,aAAa,EAA3B;;IAEA,QAAI,KAAK8S,aAAT,EAAwB;IACpB,WAAKA,aAAL,CAAmB7f,OAAnB;IACA,WAAK6f,aAAL,GAAqB,IAArB;IACH;;IACD,QAAI,KAAKniB,KAAT,EAAgB;IACZ,WAAKA,KAAL,CAAWsC,OAAX;IACA,WAAKtC,KAAL,GAAa,IAAb;IACH;;IAED,QAAI,KAAKjC,KAAT,EAAgB;IACZ,WAAKA,KAAL,CAAWuE,OAAX;IACA,WAAKvE,KAAL,GAAa,IAAb;IACH;;IAED,QAAI,KAAKmjB,MAAT,EAAiB;IACb,WAAKA,MAAL,CAAY5e,OAAZ;IACA,WAAK4e,MAAL,GAAc,IAAd;IACH;;IAED,QAAI,KAAKO,QAAT,EAAmB;IACf,WAAKA,QAAL,CAAcnf,OAAd;IACA,WAAKmf,QAAL,GAAgB,IAAhB;IACH;;IAED,QAAI,KAAK8F,OAAT,EAAkB;IACd,WAAKA,OAAL,CAAajlB,OAAb;IACA,WAAKilB,OAAL,GAAe,IAAf;IACH;;IAED,QAAI,KAAK/C,gBAAT,EAA2B;IACvB,WAAKA,gBAAL,CAAsBliB,OAAtB;IACA,WAAKkiB,gBAAL,GAAwB,IAAxB;IACH;;IAED,QAAI,KAAKC,UAAT,EAAqB;IACjB,WAAKA,UAAL,CAAgBniB,OAAhB;IACA,WAAKmiB,UAAL,GAAkB,IAAlB;IACH;;IAED,QAAI,KAAKzF,KAAT,EAAgB;IACZ,WAAKA,KAAL,CAAW1c,OAAX;IACA,WAAK0c,KAAL,GAAa,IAAb;IACH;;IAGD,QAAI,KAAKxO,MAAT,EAAiB;IACb,WAAKA,MAAL,CAAYlO,OAAZ;IACA,WAAKkO,MAAL,GAAc,IAAd;IACH;;IAED,SAAK6rB,sBAAL;IACA,SAAKC,wBAAL,GA1DM;;IA4DN,SAAKC,eAAL;IACA,SAAKh/B,YAAL,GAAoB,IAApB,CA7DM;;IA+DN,SAAKi/B,UAAL;IACA,SAAKL,eAAL,GAAuB,CAAvB;IACA,SAAKD,eAAL,GAAuB,CAAvB,CAjEM;;IAoEN,SAAK7rB,IAAL,CAAU,SAAV,EApEM;;IAsEN,SAAKI,GAAL;IAEA,SAAK7T,KAAL,CAAWsE,GAAX,CAAe,MAAf,EAAuB,aAAvB;IACH;;IAEa,MAAVtD,UAAU,CAACsO,KAAD,EAAQ;IAClB,SAAKmE,IAAL,CAAU9P,MAAM,CAAC3C,UAAjB,EAA6BsO,KAA7B;IACH;;IAEa,MAAVtO,UAAU,GAAG;IACb,WAAOwQ,YAAY,MAAM,KAAK5N,aAA9B;IACH;;IAEgB,MAAbA,aAAa,CAAC0L,KAAD,EAAQ;IACrB,SAAKmE,IAAL,CAAU9P,MAAM,CAACC,aAAjB,EAAgC0L,KAAhC;IACH;;IAEgB,MAAb1L,aAAa,GAAG;IAChB,WAAO,KAAKsH,UAAL,CAAgBiJ,SAAhB,CAA0B0rB,QAA1B,CAAmC,0BAAnC,CAAP;IACH;;IAES,MAAN/rB,MAAM,CAACxE,KAAD,EAAQ;IACd,SAAK2vB,UAAL,GAAkB3vB,KAAlB;IACH;;IAES,MAANwE,MAAM,GAAG;IACT,WAAO,KAAKmrB,UAAZ;IACH,GAhOuC;;;IAmO7B,MAAPn7B,OAAO,CAACwL,KAAD,EAAQ;IAEf,QAAIA,KAAJ,EAAW;IACP;IACA,WAAKpL,OAAL,GAAe,KAAf;IACH;;IAED,QAAI,KAAKJ,OAAL,KAAiBwL,KAArB,EAA4B;IACxB,WAAK0vB,QAAL,GAAgB1vB,KAAhB;IACA,WAAKmE,IAAL,CAAU9P,MAAM,CAACG,OAAjB,EAA0BwL,KAA1B;IACA,WAAKmE,IAAL,CAAU9P,MAAM,CAAC8B,YAAjB,EAA+B,KAAK6a,MAApC;;IAEA,UAAIhR,KAAJ,EAAW;IACP,aAAKmE,IAAL,CAAU9P,MAAM,CAACzC,IAAjB;IACH,OAFD,MAEO;IACH,aAAKuS,IAAL,CAAU9P,MAAM,CAACI,KAAjB;IACH;IACJ;IAEJ;;IAEU,MAAPD,OAAO,GAAG;IACV,WAAO,KAAKk7B,QAAZ;IACH;;IAES,MAAN1e,MAAM,GAAG;IACT,WAAQ,KAAKnf,KAAL,IAAc,KAAKA,KAAL,CAAWmf,MAA1B,IAAqC,CAA5C;IACH;;IAES,MAANA,MAAM,CAAChR,KAAD,EAAQ;IACd,SAAKnO,KAAL,IAAc,KAAKA,KAAL,CAAWggB,SAAX,CAAqB7R,KAArB,CAAd;IACH;;IAEU,MAAPpL,OAAO,CAACoL,KAAD,EAAQ;IACf,QAAI,KAAKpL,OAAL,KAAiBoL,KAArB,EAA4B;IACxB,WAAKyvB,QAAL,GAAgBzvB,KAAhB;IACA,WAAKmE,IAAL,CAAU9P,MAAM,CAACO,OAAjB,EAA0B,KAAK66B,QAA/B;IACH;IACJ;;IAEU,MAAP76B,OAAO,GAAG;IACV,WAAO,KAAK66B,QAAZ;IACH;;IAEY,MAATp6B,SAAS,CAAC2K,KAAD,EAAQ;IACjB,QAAI,KAAKxL,OAAT,EAAkB;IACd,UAAIwL,KAAJ,EAAW;IACP,aAAKuV,QAAL,CAAcZ,WAAd;IACH,OAFD,MAEO;IACH,aAAKY,QAAL,CAAcI,iBAAd;IACH;IACJ;IACJ;;IAEY,MAATtgB,SAAS,GAAG;IACZ,WAAO,KAAKkgB,QAAL,IAAiB,KAAKA,QAAL,CAAclgB,SAAtC;IACH;;IAEiB,MAAdmc,cAAc,CAACxR,KAAD,EAAQ;IACtB,QAAIA,KAAK,KAAK,IAAd,EAAoB;IAChB;IACH;;IACD,SAAKiwB,eAAL,GAAuBjwB,KAAvB;IACH,GAlSuC;;;IAqStB,MAAdwR,cAAc,GAAG;IACjB,WAAO,KAAKye,eAAZ;IACH,GAvSuC;;;IA0StB,MAAdjsB,cAAc,CAAChE,KAAD,EAAQ;IACtB,QAAIA,KAAK,KAAK,IAAd,EAAoB;IAChB;IACH;;IACD,SAAKgwB,eAAL,GAAuBhwB,KAAvB,CAJsB;;IAMtB,QAAI,CAAC,KAAK7F,IAAL,CAAUzH,MAAX,IAAqB,CAAC,KAAKyH,IAAL,CAAUxH,MAApC,EAA4C;IACxC,UAAI,KAAK6e,cAAL,IAAuB,KAAKxN,cAAhC,EAAgD;IAC5C,aAAKnS,KAAL,IAAc,KAAKA,KAAL,CAAWsS,IAAX,CAAgB9P,MAAM,CAACsC,cAAvB,EAAuC;IACjD6a,UAAAA,cAAc,EAAE,KAAKA,cAD4B;IAEjDxN,UAAAA,cAAc,EAAE,KAAKA,cAF4B;IAGjDsM,UAAAA,IAAI,EAAE,KAAKkB,cAAL,GAAsB,KAAKxN;IAHgB,SAAvC,CAAd;IAKH;IACJ;IACJ,GAzTuC;;;IA4TtB,MAAdA,cAAc,GAAG;IACjB,WAAO,KAAKgsB,eAAZ;IACH;IAGD;IACJ;IACA;IACA;;;IACIQ,EAAAA,YAAY,CAAC/f,OAAD,EAAU;IAClB,SAAKtW,IAAL,GAAYqB,MAAM,CAAC+zB,MAAP,CAAc,EAAd,EAAkB,KAAKp1B,IAAvB,EAA6BsW,OAA7B,CAAZ;IACH;IAED;IACJ;IACA;IACA;;;IACIxd,EAAAA,IAAI,GAAG;IACH,WAAO,IAAIg8B,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC,UAAI,CAAC,KAAKzb,MAAV,EAAkB;IACd,aAAKA,MAAL,GAAc,IAAId,MAAJ,CAAW,IAAX,CAAd;IACH;;IAED,UAAI,CAAC,KAAKpB,KAAV,EAAiB;IACb,aAAKA,KAAL,GAAa,IAAImH,KAAJ,CAAU,IAAV,CAAb;IACH;;IAED,UAAI,KAAK9f,IAAL,CAAUzH,MAAd,EAAsB;IAClB,YAAI,CAAC,KAAK4lB,gBAAV,EAA4B;IACxB,eAAKA,gBAAL,GAAwB,IAAI4B,gBAAJ,CAAqB,IAArB,CAAxB;IACH;IACJ;;IAED,UAAI,KAAK/f,IAAL,CAAUxH,MAAd,EAAsB;IAClB,YAAI,CAAC,KAAK4lB,UAAV,EAAsB;IAClB,eAAKA,UAAL,GAAkB,IAAIwT,UAAJ,CAAe,IAAf,CAAlB;IACH;IACJ;;IAED,UAAI,CAAC,KAAK9V,aAAN,IAAuB,CAAC,KAAKia,kBAAL,EAA5B,EAAuD;IACnD,aAAKja,aAAL,GAAqB,IAAID,aAAJ,CAAkB,IAAlB,CAArB;IAEA,aAAKhQ,IAAL,CAAU3R,MAAM,CAACE,iBAAjB,EAAoC,MAAM;IACtC26B,UAAAA,OAAO;IACV,SAFD;IAGH,OAND,MAMO;IACHA,QAAAA,OAAO;IACV;IAEJ,KA/BM,CAAP;IAgCH;IAGD;IACJ;IACA;IACA;IACA;;;IACIt9B,EAAAA,IAAI,CAACQ,GAAD,EAAM;IACN,WAAO,IAAI68B,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC,UAAI,CAACr+B,GAAD,IAAQ,CAAC,KAAK+H,IAAL,CAAU/H,GAAvB,EAA4B;IACxB,eAAOq+B,MAAM,EAAb;IACH;;IAED,WAAK77B,OAAL,GAAe,IAAf;IACA,WAAKJ,OAAL,GAAe,KAAf;IACA,WAAKue,MAAL,CAAY3P,aAAZ,GAA4BpE,GAAG,EAA/B;;IACA,UAAI,CAAC5M,GAAL,EAAU;IACNA,QAAAA,GAAG,GAAG,KAAK+H,IAAL,CAAU/H,GAAhB;IACH;;IACD,WAAK+H,IAAL,CAAU/H,GAAV,GAAgBA,GAAhB;IAEA,WAAK+9B,sBAAL;IAEA,WAAKl9B,IAAL,GAAYyR,IAAZ,CAAiB,MAAM;IACnB,aAAKqO,MAAL,CAAY1P,SAAZ,GAAwBrE,GAAG,EAA3B,CADmB;;IAGnB,YAAI,KAAK7E,IAAL,CAAU7I,SAAd,EAAyB;IACrB,eAAKoD,IAAL,CAAU,KAAV;IACH;;IAGD,YAAI,KAAK4jB,gBAAT,EAA2B;IACvB,eAAKA,gBAAL,CAAsBtS,IAAtB,CAA2BlP,YAAY,CAACI,uBAAxC,EAAiE,MAAM;IACnE,iBAAKiN,IAAL,CAAUrN,YAAY,CAACI,uBAAvB;;IACA,gBAAI,CAAC,KAAKiD,IAAL,CAAUtH,QAAf,EAAyB;IACrB,mBAAKsR,IAAL,CAAU9P,MAAM,CAACY,KAAjB,EAAwB6B,YAAY,CAACI,uBAArC;IACH;IACJ,WALD;IAMH;;IAED,YAAI,KAAKqhB,UAAT,EAAqB;IACjB,eAAKA,UAAL,CAAgBvS,IAAhB,CAAqBlP,YAAY,CAACK,yBAAlC,EAA6D,MAAM;IAC/D,iBAAKgN,IAAL,CAAUrN,YAAY,CAACK,yBAAvB;;IACA,gBAAI,CAAC,KAAKgD,IAAL,CAAUtH,QAAf,EAAyB;IACrB,mBAAKsR,IAAL,CAAU9P,MAAM,CAACY,KAAjB,EAAwB6B,YAAY,CAACK,yBAArC;IACH;IACJ,WALD;IAMH;;IAED,aAAKooB,cAAL;IAEA,aAAKvK,MAAL,CAAYnC,WAAZ,CAAwBzgB,GAAxB,EA5BmB;;IA+BnB,aAAKs+B,mBAAL,GA/BmB;;IAiCnB,aAAK1b,MAAL,CAAYhP,IAAZ,CAAiBlP,YAAY,CAACE,UAA9B,EAA2C/B,KAAD,IAAW;IACjDw7B,UAAAA,MAAM,CAACx7B,KAAD,CAAN;IACH,SAFD,EAjCmB;;IAsCnB,aAAK+f,MAAL,CAAYhP,IAAZ,CAAiBlP,YAAY,CAACG,cAA9B,EAA+ChC,KAAD,IAAW;IACrDw7B,UAAAA,MAAM,CAACx7B,KAAD,CAAN;IACH,SAFD,EAtCmB;;IA2CnB,aAAK+f,MAAL,CAAYhP,IAAZ,CAAiB3R,MAAM,CAAC2B,aAAxB,EAAuC,MAAM;IACzCk5B,UAAAA,OAAO;IACP,eAAKnc,MAAL,CAAYxP,cAAZ,GAA6BvE,GAAG,EAAhC,CAFyC;;IAIzC,cAAI,KAAK7E,IAAL,CAAUxH,MAAd,EAAsB;IAClB,iBAAKmB,KAAL,CAAWlC,IAAX;IACH;IACJ,SAPD;IASH,OApDD,EAoDG+S,KApDH,CAoDUvH,CAAD,IAAO;IACZqzB,QAAAA,MAAM,CAACrzB,CAAD,CAAN;IACH,OAtDD;IAuDH,KAtEM,CAAP;IAuEH;IAED;IACJ;IACA;;;IACIjJ,EAAAA,KAAK,GAAG;IACJ,WAAO,IAAI86B,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC,WAAKE,MAAL,GAAcjsB,IAAd,CAAmB,MAAM;IACrB,aAAK5Q,KAAL,CAAW6Z,SAAX;IACAuhB,QAAAA,OAAO;IACV,OAHD;IAIH,KALM,CAAP;IAMH;;IAEDyB,EAAAA,MAAM,GAAG;IACL,WAAO,IAAI1B,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC;IACA,UAAI,KAAKzb,MAAT,EAAiB;IACb,aAAKA,MAAL,CAAY5e,OAAZ;IACA,aAAK4e,MAAL,GAAc,IAAd;IACH;;IAED,UAAI,KAAKlC,KAAT,EAAgB;IACZ,aAAKA,KAAL,CAAW1c,OAAX;IACA,aAAK0c,KAAL,GAAa,IAAb;IACH,OAVmC;;;IAapC,UAAI,KAAKmD,aAAT,EAAwB;IACpB,aAAKA,aAAL,CAAmB7f,OAAnB;IACA,aAAK6f,aAAL,GAAqB,IAArB;IACH;;IAED,UAAI,KAAKqC,gBAAT,EAA2B;IACvB,aAAKA,gBAAL,CAAsBliB,OAAtB;IACA,aAAKkiB,gBAAL,GAAwB,IAAxB;IACH;;IAED,UAAI,KAAKC,UAAT,EAAqB;IACjB,aAAKA,UAAL,CAAgBniB,OAAhB;IACA,aAAKmiB,UAAL,GAAkB,IAAlB;IACH;;IAGD,WAAK4X,sBAAL;IACA,WAAKC,wBAAL;IACA,WAAK57B,OAAL,GAAe,KAAf;IACA,WAAKI,OAAL,GAAe,KAAf;IACA,WAAKS,SAAL,GAAiB,KAAjB,CAjCoC;;IAmCpC,WAAKxD,KAAL,IAAc,KAAKA,KAAL,CAAW4C,KAAX,EAAd,CAnCoC;;IAqCpC,WAAK47B,eAAL,GArCoC;;IAuCpC,WAAKC,UAAL,GAvCoC;;IAyCpC,WAAKL,eAAL,GAAuB,CAAvB;IACA,WAAKD,eAAL,GAAuB,CAAvB,CA1CoC;;IA4CpC,WAAKjd,MAAL,GAAc5P,aAAa,EAA3B,CA5CoC;;IA8CpCtE,MAAAA,UAAU,CAAC,MAAM;IACbqwB,QAAAA,OAAO;IACV,OAFS,EAEP,CAFO,CAAV;IAGH,KAjDM,CAAP;IAkDH;IAED;IACJ;IACA;IACA;IACA;;;IACIz6B,EAAAA,KAAK,CAACmd,IAAD,EAAO;IACR,QAAIA,IAAJ,EAAU;IACN,aAAO,KAAKzd,KAAL,EAAP;IACH,KAFD,MAEO;IACH,aAAO,KAAKw8B,MAAL,EAAP;IACH;IACJ;IAED;IACJ;IACA;IACA;;;IACIj8B,EAAAA,IAAI,CAACkd,IAAD,EAAO;IACP,SAAK/f,KAAL,IAAc,KAAKA,KAAL,CAAW6C,IAAX,CAAgBkd,IAAhB,CAAd;IACH;IAED;IACJ;IACA;;;IACI9b,EAAAA,MAAM,GAAG;IACL,SAAKhC,KAAL,CAAWgC,MAAX;IACH;IAED;IACJ;IACA;IACA;IACA;;;IACI6e,EAAAA,WAAW,CAACtW,QAAD,EAAWgW,QAAX,EAAqB;IAC5B,QAAI,KAAKhf,SAAT,EAAoB;IAChB;IACH;;IAED,SAAKkgB,QAAL,CAAcd,WAAd,CAA0BpW,QAA1B,EAAoCgW,QAApC;IACA,SAAKhf,SAAL,GAAiB,IAAjB;IACH;IAED;IACJ;IACA;;;IACIsgB,EAAAA,iBAAiB,GAAG;IAChB,QAAI,KAAKtgB,SAAT,EAAoB;IAChB,WAAKA,SAAL,GAAiB,KAAjB;IACH;IACJ;;IAEDm6B,EAAAA,WAAW,GAAG;IACV,QAAI/sB,MAAM,GAAG,KAAb;IAEA,QAAImuB,UAAU,GAAG,KAAjB;IACAp1B,IAAAA,MAAM,CAACyE,IAAP,CAAY,KAAK9F,IAAL,CAAU1I,WAAtB,EAAmC4J,OAAnC,CAA4CnC,GAAD,IAAS;IAChD,UAAI,KAAKiB,IAAL,CAAU1I,WAAV,CAAsByH,GAAtB,CAAJ,EAAgC;IAC5B03B,QAAAA,UAAU,GAAG,IAAb;IACH;IACJ,KAJD;;IAMA,QAAI,KAAKz2B,IAAL,CAAU/I,aAAV,IAA2B,KAAK+I,IAAL,CAAU02B,IAArC,IAA6CD,UAAjD,EAA6D;IACzDnuB,MAAAA,MAAM,GAAG,IAAT;IACH;;IAED,WAAOA,MAAP;IACH;;IAEDytB,EAAAA,kBAAkB,GAAG;IACjB,WAAO,KAAK/1B,IAAL,CAAU5I,QAAV,KAAuB,KAAvB,KAAiC,KAAK4I,IAAL,CAAUxH,MAAV,IAAqB,KAAKwH,IAAL,CAAUzH,MAAV,IAAoB,CAAC,KAAKyH,IAAL,CAAUvH,YAArF,CAAP;IACH;;IAEDk+B,EAAAA,UAAU,GAAG;IACT,SAAKX,sBAAL;IACA,SAAKY,iBAAL;IACH,GA5kBuC;;;IA+kBxCA,EAAAA,iBAAiB,GAAG;IAChB,SAAKnB,kBAAL,GAA0B/wB,UAAU,CAAC,MAAM;IACvC,WAAKpK,KAAL,CAAW,KAAX,EAAkBiQ,IAAlB,CAAuB,MAAM;IACzB,aAAKP,IAAL,CAAU9P,MAAM,CAACvD,OAAjB,EAA0BuD,MAAM,CAACa,YAAjC;IACA,aAAKiP,IAAL,CAAU9P,MAAM,CAACa,YAAjB;IACH,OAHD;IAIH,KALmC,EAKjC,KAAKiF,IAAL,CAAUtJ,YAAV,GAAyB,IALQ,CAApC;IAMH,GAtlBuC;;;IAylBxCs/B,EAAAA,sBAAsB,GAAG;IACrB,QAAI,KAAKP,kBAAT,EAA6B;IACzBoB,MAAAA,YAAY,CAAC,KAAKpB,kBAAN,CAAZ;IACA,WAAKA,kBAAL,GAA0B,IAA1B;IACH;IACJ,GA9lBuC;;;IAimBxCc,EAAAA,mBAAmB,GAAG;IAClB,SAAKb,oBAAL,GAA4BhxB,UAAU,CAAC,MAAM;IACzC,WAAKpK,KAAL,CAAW,KAAX,EAAkBiQ,IAAlB,CAAuB,MAAM;IACzB,aAAKP,IAAL,CAAU9P,MAAM,CAACvD,OAAjB,EAA0BuD,MAAM,CAACzD,cAAjC;IACA,aAAKuT,IAAL,CAAU9P,MAAM,CAACzD,cAAjB;IACH,OAHD;IAIH,KALqC,EAKnC,KAAKuJ,IAAL,CAAUvJ,cAAV,GAA2B,IALQ,CAAtC;IAMH;;IAEDw/B,EAAAA,wBAAwB,GAAG;IACvB,QAAI,KAAKP,oBAAT,EAA+B;IAC3BmB,MAAAA,YAAY,CAAC,KAAKnB,oBAAN,CAAZ;IACA,WAAKA,oBAAL,GAA4B,IAA5B;IACH;IACJ;;IAEDnZ,EAAAA,YAAY,GAAG;IACX,QAAI,KAAK9hB,OAAT,EAAkB;IACd,WAAKuP,IAAL,CAAU9P,MAAM,CAACuB,KAAjB;IACA,WAAKhB,OAAL,GAAe,KAAf;IACA,WAAKw7B,wBAAL;IACH;;IACD,QAAI,CAAC,KAAK57B,OAAV,EAAmB;IACf,WAAKA,OAAL,GAAe,IAAf;IACH;;IACD,SAAKs8B,UAAL;IACH,GA3nBuC;;;IA+nBxCna,EAAAA,WAAW,CAAClG,OAAD,EAAU;IACjBA,IAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;;IAEA,QAAI,CAAC,KAAKqf,aAAV,EAAyB;IACrB,WAAKA,aAAL,GAAqB9wB,GAAG,EAAxB;IACH;;IAED,QAAIkE,UAAU,CAACuN,OAAO,CAAC7D,EAAT,CAAd,EAA4B;IACxB,WAAKmjB,MAAL,CAAYnjB,EAAZ,GAAiB6D,OAAO,CAAC7D,EAAzB;IACH;;IAED,QAAI1J,UAAU,CAACuN,OAAO,CAACmG,GAAT,CAAd,EAA6B;IACzB,WAAKmZ,MAAL,CAAYnZ,GAAZ,GAAkBnG,OAAO,CAACmG,GAA1B;IACH;;IAED,QAAInG,OAAO,CAACjO,GAAZ,EAAiB;IACb,WAAKutB,MAAL,CAAYvtB,GAAZ,IAAmB,CAAnB;IACH;;IACD,QAAIiO,OAAO,CAAC0I,IAAZ,EAAkB;IACd,WAAK4W,MAAL,CAAY5W,IAAZ,IAAoB1I,OAAO,CAAC0I,IAA5B;IACH;;IACD,QAAI1I,OAAO,CAAC2I,IAAZ,EAAkB;IACd,WAAK2W,MAAL,CAAY3W,IAAZ,IAAoB3I,OAAO,CAAC2I,IAA5B;IACH;;IAED,UAAM6X,QAAQ,GAAGjyB,GAAG,EAApB;;IACA,UAAM8V,SAAS,GAAGmc,QAAQ,GAAG,KAAKnB,aAAlC;;IAEA,QAAIhb,SAAS,GAAG,IAAI,IAApB,EAA0B;IACtB;IACH;;IAED,SAAK3Q,IAAL,CAAU9P,MAAM,CAACc,KAAjB,EAAwB,KAAK46B,MAA7B;IACA,SAAK5rB,IAAL,CAAU9P,MAAM,CAACe,WAAjB,EAA8BmN,SAAS,CAAC,KAAKwtB,MAAL,CAAYvtB,GAAb,CAAvC;IACA,SAAKutB,MAAL,CAAYvtB,GAAZ,GAAkB,CAAlB;IACA,SAAKutB,MAAL,CAAY5W,IAAZ,GAAmB,CAAnB;IACA,SAAK4W,MAAL,CAAY3W,IAAZ,GAAmB,CAAnB;IACA,SAAK0W,aAAL,GAAqBmB,QAArB;IACH;;IAEDX,EAAAA,UAAU,GAAG;IACT,SAAKR,aAAL,GAAqB,IAArB;IACA,SAAKC,MAAL,GAAc;IACVnZ,MAAAA,GAAG,EAAE,CADK;IACF;IACRpU,MAAAA,GAAG,EAAE,CAFK;IAGV2W,MAAAA,IAAI,EAAE,CAHI;IAIVC,MAAAA,IAAI,EAAE,CAJI;IAKVxM,MAAAA,EAAE,EAAE;IALM,KAAd;IAOH;;IAED2S,EAAAA,cAAc,GAAG;IACb,QAAI,KAAKplB,IAAL,CAAU9I,YAAd,EAA4B;IACxB,WAAKA,YAAL,CAAkBg9B,MAAlB;IACH;IACJ;;IAEDgC,EAAAA,eAAe,GAAG;IACd,QAAI,KAAKl2B,IAAL,CAAU9I,YAAd,EAA4B;IACxB,WAAKA,YAAL,CAAkBy9B,OAAlB;IACH;IACJ;;IAEDhY,EAAAA,uBAAuB,GAAG;IACtB,UAAM/D,MAAM,GAAG,KAAKA,MAApB;IACAA,IAAAA,MAAM,CAACpP,aAAP,GAAuBoP,MAAM,CAAC1P,SAAP,GAAmB0P,MAAM,CAAC3P,aAAjD;IACA2P,IAAAA,MAAM,CAACnP,eAAP,GAAyBmP,MAAM,CAACzP,WAAP,GAAqByP,MAAM,CAAC1P,SAArD;IACA0P,IAAAA,MAAM,CAAClP,uBAAP,GAAiCkP,MAAM,CAACxP,cAAP,GAAwBwP,MAAM,CAACzP,WAAhE;IACAyP,IAAAA,MAAM,CAACjP,cAAP,GAAwBiP,MAAM,CAACvP,UAAP,GAAoBuP,MAAM,CAACxP,cAAnD;IACAwP,IAAAA,MAAM,CAAChP,eAAP,GAAyBgP,MAAM,CAACtP,WAAP,GAAqBsP,MAAM,CAACvP,UAArD;IACAuP,IAAAA,MAAM,CAAC/O,cAAP,GAAwB+O,MAAM,CAACrP,UAAP,GAAoBqP,MAAM,CAACtP,WAAnD;IACAsP,IAAAA,MAAM,CAAC9O,YAAP,GAAsB8O,MAAM,CAACrP,UAAP,GAAoBqP,MAAM,CAAC3P,aAAjD;IACA,SAAKe,IAAL,CAAU9P,MAAM,CAACuC,iBAAjB,EAAoCmc,MAApC;IACH;;IAxsBuC;;ICvB5C,MAAMme,SAAN,SAAwBrrB,OAAxB,CAAgC;IAChB,SAALsrB,KAAK,GAAGr6B,YAAH;IAEE,SAAPs6B,OAAO,GAAG;IACbxgC,IAAAA,cAAc,EAAEyD,MAAM,CAACzD,cADV;IAEbsE,IAAAA,YAAY,EAAEb,MAAM,CAACa;IAFR,GAAH;;IAKd8E,EAAAA,WAAW,CAACyW,OAAD,EAAU;IACjB;IACA,QAAItW,IAAI,GAAGsW,OAAX;IACA,QAAI7U,UAAU,GAAG6U,OAAO,CAAC6e,SAAzB;;IACA,QAAI,OAAO7e,OAAO,CAAC6e,SAAf,KAA6B,QAAjC,EAA2C;IACvC1zB,MAAAA,UAAU,GAAG2C,QAAQ,CAACgd,aAAT,CAAuB9K,OAAO,CAAC6e,SAA/B,CAAb;IACH;;IACD,QAAI,CAAC1zB,UAAL,EAAiB;IACb,YAAM,IAAIy1B,KAAJ,CAAU,iCAAV,CAAN;IAEH;;IAEDz1B,IAAAA,UAAU,CAACiJ,SAAX,CAAqBC,GAArB,CAAyB,qBAAzB;IAEA,WAAO3K,IAAI,CAACm1B,SAAZ,CAdiB;;IAiBjB,QAAIpsB,UAAU,CAAC/I,IAAI,CAAC7J,WAAN,CAAd,EAAkC;IAC9B6J,MAAAA,IAAI,CAAC7J,WAAL,GAAmBkd,MAAM,CAACrT,IAAI,CAAC7J,WAAN,CAAN,GAA2B,IAA9C;IACH,KAnBgB;;;IAsBjB,QAAI4S,UAAU,CAAC/I,IAAI,CAACrJ,OAAN,CAAd,EAA8B;IAC1B,UAAIkS,OAAO,CAAC7I,IAAI,CAACvJ,cAAN,CAAX,EAAkC;IAC9BuJ,QAAAA,IAAI,CAACvJ,cAAL,GAAsBuJ,IAAI,CAACrJ,OAA3B;IACH;;IAED,UAAIkS,OAAO,CAAC7I,IAAI,CAACtJ,YAAN,CAAX,EAAgC;IAC5BsJ,QAAAA,IAAI,CAACtJ,YAAL,GAAoBsJ,IAAI,CAACrJ,OAAzB;IACH;IACJ;;IAED,SAAKqJ,IAAL,GAAYA,IAAZ;IACA,SAAKyB,UAAL,GAAkBA,UAAlB;IACA,SAAK01B,0BAAL,GAAkC,CAAlC;IACA,SAAKC,wBAAL,GAAgC,CAAhC;IACA,SAAKjtB,MAAL,GAAc,IAAI/J,MAAJ,CAAW,IAAX,CAAd;;IACA,SAAKi3B,WAAL,CAAiB51B,UAAjB,EAA6BzB,IAA7B;IACH;IAED;IACJ;IACA;;;IACI/D,EAAAA,OAAO,GAAG;IACN,QAAI,KAAKkO,MAAT,EAAiB;IACb,WAAKA,MAAL,CAAYlO,OAAZ;IACA,WAAKkO,MAAL,GAAc,IAAd;IACH;;IAED,QAAI,KAAK/I,MAAT,EAAiB;IACb,WAAKA,MAAL,CAAYnF,OAAZ;IACA,WAAKmF,MAAL,GAAc,IAAd;IACH;;IACD,SAAKK,UAAL,GAAkB,IAAlB;IACA,SAAKzB,IAAL,GAAY,IAAZ;IACA,SAAKm3B,0BAAL,GAAkC,CAAlC;IACA,SAAKC,wBAAL,GAAgC,CAAhC;IACA,SAAKhtB,GAAL;IACH;;IAEDitB,EAAAA,WAAW,CAAC51B,UAAD,EAAa6U,OAAb,EAAsB;IAC7B,SAAKlV,MAAL,GAAc,IAAI8zB,MAAJ,CAAWzzB,UAAX,EAAuB6U,OAAvB,CAAd;;IACA,SAAKghB,WAAL;IACH;;IAEDC,EAAAA,YAAY,GAAe;IAAA,QAAdjhB,OAAc,uEAAJ,EAAI;IACvB,SAAKlV,MAAL,CAAYnF,OAAZ;IACA,SAAKmF,MAAL,GAAc,IAAd;;IACA,UAAMo2B,QAAQ,GAAGn2B,MAAM,CAAC+zB,MAAP,CAAc,KAAKp1B,IAAnB,EAAyBsW,OAAzB,CAAjB;;IACA,SAAK+gB,WAAL,CAAiB,KAAK51B,UAAtB,EAAkC+1B,QAAlC;IACH;;IAEDF,EAAAA,WAAW,GAAG;IACV;IACAj2B,IAAAA,MAAM,CAACyE,IAAP,CAAYpJ,gBAAZ,EAA8BwE,OAA9B,CAAuCnC,GAAD,IAAS;IAC3C,WAAKqC,MAAL,CAAY8I,EAAZ,CAAexN,gBAAgB,CAACqC,GAAD,CAA/B,EAAuC8G,KAAD,IAAW;IAC7C,aAAKmE,IAAL,CAAUjL,GAAV,EAAe8G,KAAf;IACH,OAFD;IAGH,KAJD;IAKH;IAED;IACJ;IACA;IACA;;;IACI4xB,EAAAA,QAAQ,CAAC5xB,KAAD,EAAQ;IACZ,SAAKzE,MAAL,CAAYi1B,YAAZ,CAAyB;IACrBqB,MAAAA,OAAO,EAAE,CAAC,CAAC7xB;IADU,KAAzB;IAGH;IAED;IACJ;IACA;;;IACItL,EAAAA,IAAI,GAAG;IACH,SAAK6G,MAAL,CAAY7G,IAAZ,CAAiB,IAAjB;IACH;IAED;IACJ;IACA;;;IACIo9B,EAAAA,UAAU,GAAG;IACT,SAAKv2B,MAAL,CAAY7G,IAAZ,CAAiB,KAAjB;IACH;IAED;IACJ;IACA;IACA;;;IACImd,EAAAA,SAAS,CAAC7R,KAAD,EAAQ;IACb,SAAKzE,MAAL,CAAYyV,MAAZ,GAAqBhR,KAArB;IACH;IAED;IACJ;IACA;;;IACI+xB,EAAAA,WAAW,GAAG;IACV,SAAKx2B,MAAL,CAAY1J,KAAZ,IAAqB,KAAK0J,MAAL,CAAY1J,KAAZ,CAAkBse,YAAlB,CAA+B,IAA/B,CAArB;IACH;IAED;IACJ;IACA;IACA;;;IACItR,EAAAA,UAAU,CAACmzB,IAAD,EAAO;IACbA,IAAAA,IAAI,GAAGxkB,MAAM,CAACwkB,IAAD,CAAb;IACA,SAAKz2B,MAAL,CAAYi1B,YAAZ,CAAyB;IACrB1/B,MAAAA,OAAO,EAAEkhC,IADY;IAErBphC,MAAAA,cAAc,EAAEohC,IAFK;IAGrBnhC,MAAAA,YAAY,EAAEmhC;IAHO,KAAzB;IAKH;IAED;IACJ;IACA;IACA;;;IACIC,EAAAA,YAAY,CAACr0B,IAAD,EAAO;IACfA,IAAAA,IAAI,GAAG4P,MAAM,CAAC5P,IAAD,CAAb;IACA,QAAI6S,OAAO,GAAG;IACVjgB,MAAAA,YAAY,EAAE,KADJ;IAEVD,MAAAA,QAAQ,EAAE;IAFA,KAAd;;IAIA,YAAQqN,IAAR;IACI,WAAKtF,eAAe,CAACC,IAArB;IACIkY,QAAAA,OAAO,CAACjgB,YAAR,GAAuB,KAAvB;IACAigB,QAAAA,OAAO,CAAClgB,QAAR,GAAmB,KAAnB;IACA;;IACJ,WAAK+H,eAAe,CAACE,IAArB;IACIiY,QAAAA,OAAO,CAACjgB,YAAR,GAAuB,KAAvB;IACAigB,QAAAA,OAAO,CAAClgB,QAAR,GAAmB,IAAnB;IACA;;IACJ,WAAK+H,eAAe,CAACG,QAArB;IACIgY,QAAAA,OAAO,CAACjgB,YAAR,GAAuB,IAAvB;IACAigB,QAAAA,OAAO,CAAClgB,QAAR,GAAmB,IAAnB;IACA;IAZR;;IAeA,SAAKgL,MAAL,CAAYi1B,YAAZ,CAAyB/f,OAAzB;IACA,SAAK3a,MAAL;IACH;IAED;IACJ;IACA;IACA;;;IACIrB,EAAAA,KAAK,GAAG;IACJ,WAAO,KAAK8G,MAAL,CAAY9G,KAAZ,EAAP;IACH;IAED;IACJ;IACA;;;IACIN,EAAAA,KAAK,GAAG;IACJ;IACA,SAAKgG,IAAL,CAAU/H,GAAV,GAAgB,EAAhB;IACA,WAAO,KAAKmJ,MAAL,CAAYpH,KAAZ,EAAP;IACH;IAGD;IACJ;IACA;;;IACIwZ,EAAAA,SAAS,GAAG;IACR,SAAKpS,MAAL,CAAYzH,KAAZ,CAAkB6Z,SAAlB;IACH;IAED;IACJ;IACA;IACA;IACA;;;IACI/b,EAAAA,IAAI,CAACQ,GAAD,EAAM;IACN,WAAO,IAAI68B,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC,UAAI,CAACr+B,GAAD,IAAQ,CAAC,KAAK+H,IAAL,CAAU/H,GAAvB,EAA4B;IACxB,aAAK+R,IAAL,CAAU9P,MAAM,CAACY,KAAjB,EAAwB6B,YAAY,CAACC,SAArC;IACA05B,QAAAA,MAAM;IACN;IACH;;IAED,UAAIr+B,GAAJ,EAAS;IACL;IACA,YAAI,KAAK+H,IAAL,CAAU/H,GAAd,EAAmB;IACf;IACA,cAAIA,GAAG,KAAK,KAAK+H,IAAL,CAAU/H,GAAtB,EAA2B;IACvB;IACA,gBAAI,KAAKmJ,MAAL,CAAY/G,OAAhB,EAAyB;IACrB06B,cAAAA,OAAO;IACV,aAFD,MAEO;IACH;IACA,mBAAKvhB,SAAL;IACA,mBAAKpS,MAAL,CAAY3J,IAAZ,CAAiB,KAAKuI,IAAL,CAAU/H,GAA3B,EAAgCsS,IAAhC,CAAqC,MAAM;IACvCwqB,gBAAAA,OAAO;IACV,eAFD,EAEGvqB,KAFH,CAES,MAAM;IACX,qBAAKpJ,MAAL,CAAY9G,KAAZ,GAAoBiQ,IAApB,CAAyB,MAAM;IAC3B+rB,kBAAAA,MAAM;IACT,iBAFD;IAGH,eAND;IAOH;IACJ,WAfD,MAeO;IACH;IACA,iBAAKl1B,MAAL,CAAY9G,KAAZ,GAAoBiQ,IAApB,CAAyB,MAAM;IAC3B;IACA,mBAAKiJ,SAAL;IACA,qBAAO,KAAKukB,KAAL,CAAW9/B,GAAX,CAAP;IACH,aAJD,EAIGuS,KAJH,CAIS,MAAM;IACX8rB,cAAAA,MAAM;IACT,aAND;IAOH;IACJ,SA3BD,MA2BO;IACH,iBAAO,KAAKyB,KAAL,CAAW9/B,GAAX,CAAP;IACH;IACJ,OAhCD,MAgCO;IACH;IACA;IACA,aAAKmJ,MAAL,CAAY3J,IAAZ,CAAiB,KAAKuI,IAAL,CAAU/H,GAA3B,EAAgCsS,IAAhC,CAAqC,MAAM;IACvCwqB,UAAAA,OAAO;IACV,SAFD,EAEGvqB,KAFH,CAES,MAAM;IACX,eAAKpJ,MAAL,CAAY9G,KAAZ,GAAoBiQ,IAApB,CAAyB,MAAM;IAC3B+rB,YAAAA,MAAM;IACT,WAFD;IAGH,SAND;IAOH;IACJ,KAlDM,CAAP;IAmDH;IAED;IACJ;IACA;IACA;IACA;IACA;;;IACIyB,EAAAA,KAAK,CAAC9/B,GAAD,EAAM;IACP,WAAO,IAAI68B,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC,WAAKt2B,IAAL,CAAU/H,GAAV,GAAgBA,GAAhB,CADoC;;IAGpC,YAAM+/B,MAAM,GAAG//B,GAAG,CAAC2kB,OAAJ,CAAY,MAAZ,MAAwB,CAAvC,CAHoC;;IAKpC,YAAMvkB,QAAQ,GAAG2/B,MAAM,GAAGpiC,oBAAoB,CAACE,KAAxB,GAAgCF,oBAAoB,CAACC,SAA5E,CALoC;;IAOpC,YAAMyC,SAAS,GAAI0/B,MAAM,IAAI//B,GAAG,CAAC2kB,OAAJ,CAAY,MAAZ,MAAwB,CAAC,CAAnC,IAAwC,KAAK5c,IAAL,CAAU1J,KAAnD,GAA4DP,UAAU,CAACC,GAAvE,GAA6ED,UAAU,CAACE,GAA1G;IAEA,WAAKmL,MAAL,CAAYi1B,YAAZ,CAAyB;IACrBh+B,QAAAA,QADqB;IAErBC,QAAAA;IAFqB,OAAzB;IAKA,WAAK8I,MAAL,CAAYyK,IAAZ,CAAiBlP,YAAY,CAACK,yBAA9B,EAAyD,MAAM;IAC3D,aAAKhD,KAAL,GAAauQ,IAAb,CAAkB,MAAM;IACpB,cAAI,KAAKnJ,MAAL,CAAYpB,IAAZ,CAAiBtH,QAArB,EAA+B;IAC3B,iBAAK0I,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,8CAAnC;;IACA,iBAAK08B,YAAL,CAAkB;IAAC/+B,cAAAA,MAAM,EAAE;IAAT,aAAlB;;IACA,iBAAKf,IAAL,CAAUQ,GAAV,EAAesS,IAAf,CAAoB,MAAM;IACtB;IACA,mBAAKnJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,sDAAnC;IACH,aAHD,EAGG2P,KAHH,CAGS,MAAM;IACX;IACA,mBAAKpJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,oDAAnC;IACH,aAND;IAOH;IACJ,SAZD;IAaH,OAdD;IAgBA,WAAKuG,MAAL,CAAYyK,IAAZ,CAAiBlP,YAAY,CAACI,uBAA9B,EAAuD,MAAM;IACzD,aAAK/C,KAAL,GAAauQ,IAAb,CAAkB,MAAM;IACpB,cAAI,KAAKnJ,MAAL,CAAYpB,IAAZ,CAAiBtH,QAArB,EAA+B;IAC3B,iBAAK0I,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,8CAAnC;;IACA,iBAAK08B,YAAL,CAAkB;IAACh/B,cAAAA,MAAM,EAAE;IAAT,aAAlB;;IACA,iBAAKd,IAAL,CAAUQ,GAAV,EAAesS,IAAf,CAAoB,MAAM;IACtB;IACA,mBAAKnJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,sDAAnC;IACH,aAHD,EAGG2P,KAHH,CAGS,MAAM;IACX;IACA,mBAAKpJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,oDAAnC;IACH,aAND;IAOH;IACJ,SAZD;IAaH,OAdD,EA9BoC;;IA+CpC,WAAKuG,MAAL,CAAYyK,IAAZ,CAAiBlP,YAAY,CAACM,eAA9B,EAA+C,MAAM;IACjD,YAAI,KAAKmE,MAAL,CAAYpB,IAAZ,CAAiBrH,qBAArB,EAA4C;IACxC,eAAKqB,KAAL,GAAauQ,IAAb,CAAkB,MAAM;IACpB,iBAAKnJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,6CAAnC;;IACA,iBAAK08B,YAAL,CAAkB;IAACh/B,cAAAA,MAAM,EAAE;IAAT,aAAlB;;IACA,iBAAKd,IAAL,CAAUQ,GAAV,EAAesS,IAAf,CAAoB,MAAM;IACtB;IACA,mBAAKnJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,qDAAnC;IACH,aAHD,EAGG2P,KAHH,CAGS,MAAM;IACX;IACA,mBAAKpJ,MAAL,CAAY7K,KAAZ,CAAkBsE,GAAlB,CAAsB,WAAtB,EAAmC,mDAAnC;IACH,aAND;IAOH,WAVD;IAWH;IACJ,OAdD,EA/CoC;;IAgEpC,WAAKuG,MAAL,CAAYyK,IAAZ,CAAiB3R,MAAM,CAACa,YAAxB,EAAsC,MAAM;IACxC,YAAI,KAAKqG,MAAL,CAAYpB,IAAZ,CAAiBnJ,kBAAjB,IAAuC,KAAKugC,wBAAL,GAAgC,KAAKh2B,MAAL,CAAYpB,IAAZ,CAAiBjJ,uBAA5F,EAAqH;IACjH,eAAKqgC,wBAAL,IAAiC,CAAjC;IACA,eAAK3/B,IAAL,CAAUQ,GAAV,EAAesS,IAAf,CAAoB,MAAM;IACtB;IACA,iBAAK6sB,wBAAL,GAAgC,CAAhC;IACH,WAHD,EAGG5sB,KAHH,CAGS,MAAM;IAEd,WALD;IAMH;IACJ,OAVD,EAhEoC;;IA6EpC,WAAKpJ,MAAL,CAAYyK,IAAZ,CAAiB3R,MAAM,CAACzD,cAAxB,EAAwC,MAAM;IAC1C,YAAI,KAAK2K,MAAL,CAAYpB,IAAZ,CAAiBpJ,oBAAjB,IAAyC,KAAKugC,0BAAL,GAAkC,KAAK/1B,MAAL,CAAYpB,IAAZ,CAAiBlJ,yBAAhG,EAA2H;IACvH,eAAKqgC,0BAAL,IAAmC,CAAnC;IACA,eAAK1/B,IAAL,CAAUQ,GAAV,EAAesS,IAAf,CAAoB,MAAM;IACtB;IACA,iBAAK4sB,0BAAL,GAAkC,CAAlC;IACH,WAHD,EAGG3sB,KAHH,CAGS,MAAM;IAEd,WALD;IAMH;IACJ,OAVD;;IAaA,UAAI,KAAKytB,SAAL,EAAJ,EAAsB;IAClB,aAAK72B,MAAL,CAAY3J,IAAZ,CAAiBQ,GAAjB,EAAsBsS,IAAtB,CAA2B,MAAM;IAC7BwqB,UAAAA,OAAO;IACV,SAFD,EAEGvqB,KAFH,CAES,MAAM;IACX,eAAKpJ,MAAL,CAAY9G,KAAZ,GAAoBiQ,IAApB,CAAyB,MAAM;IAC3B+rB,YAAAA,MAAM;IACT,WAFD;IAGH,SAND;IAOH,OARD,MAQO;IACH,aAAKl1B,MAAL,CAAYyK,IAAZ,CAAiB3R,MAAM,CAACE,iBAAxB,EAA2C,MAAM;IAC7C,eAAKgH,MAAL,CAAY3J,IAAZ,CAAiBQ,GAAjB,EAAsBsS,IAAtB,CAA2B,MAAM;IAC7BwqB,YAAAA,OAAO;IACV,WAFD,EAEGvqB,KAFH,CAES,MAAM;IACX,iBAAKpJ,MAAL,CAAY9G,KAAZ,GAAoBiQ,IAApB,CAAyB,MAAM;IAC3B+rB,cAAAA,MAAM;IACT,aAFD;IAGH,WAND;IAOH,SARD;IASH;IACJ,KA7GM,CAAP;IA8GH;IAED;IACJ;IACA;;;IACI36B,EAAAA,MAAM,GAAG;IACL,SAAKyF,MAAL,CAAYzF,MAAZ;IACH;IAED;IACJ;IACA;IACA;;;IACIu8B,EAAAA,aAAa,CAACL,IAAD,EAAO;IAChBA,IAAAA,IAAI,GAAGxkB,MAAM,CAACwkB,IAAD,CAAb,CADgB;;IAGhB,SAAKz2B,MAAL,CAAYi1B,YAAZ,CAAyB;IACrBlgC,MAAAA,WAAW,EAAE0hC,IAAI,GAAG;IADC,KAAzB,EAHgB;;IAOhB,SAAKz2B,MAAL,CAAY0a,aAAZ,IAA6B,KAAK1a,MAAL,CAAY0a,aAAZ,CAA0BuB,gBAA1B,CAA2C;IACpEte,MAAAA,GAAG,EAAE,aAD+D;IAEpE8G,MAAAA,KAAK,EAAEgyB,IAAI,GAAG;IAFsD,KAA3C,CAA7B;IAIH;IAED;IACJ;IACA;IACA;;;IACIM,EAAAA,SAAS,CAACC,GAAD,EAAM;IACXA,IAAAA,GAAG,GAAG7V,QAAQ,CAAC6V,GAAD,EAAM,EAAN,CAAd;IACA,UAAMC,IAAI,GAAG,CAAC,CAAD,EAAI,EAAJ,EAAQ,GAAR,CAAb;;IACA,QAAI,KAAKr4B,IAAL,CAAU9H,MAAV,KAAqBkgC,GAArB,IAA4BC,IAAI,CAACzb,OAAL,CAAawb,GAAb,MAAsB,CAAC,CAAvD,EAA0D;IACtD;IACH;;IACD,SAAKh3B,MAAL,CAAYi1B,YAAZ,CAAyB;IACrBn+B,MAAAA,MAAM,EAAEkgC;IADa,KAAzB;IAGA,SAAKz8B,MAAL;IACH;IAED;IACJ;IACA;IACA;;;IACIs8B,EAAAA,SAAS,GAAG;IACR,WAAO,KAAK72B,MAAL,CAAYiJ,MAAnB;IACH;IAED;IACJ;IACA;;;IACIiuB,EAAAA,eAAe,GAAG;IACd,SAAKl3B,MAAL,CAAYi1B,YAAZ,CAAyB;IACrBn/B,MAAAA,YAAY,EAAE;IADO,KAAzB;IAGH;IAED;IACJ;IACA;IACA;;;IACIqhC,EAAAA,aAAa,CAAC9gB,IAAD,EAAO;IAChB,UAAMlgB,UAAU,GAAG,CAAC,CAACkgB,IAArB;;IACA,QAAI,KAAKrW,MAAL,CAAY7J,UAAZ,KAA2BA,UAA/B,EAA2C;IACvC,WAAK6J,MAAL,CAAY7J,UAAZ,GAAyBA,UAAzB;IACH;IACJ;IAED;IACJ;IACA;IACA;IACA;IACA;IACA;;;IACIC,EAAAA,UAAU,CAACqb,QAAD,EAAWC,MAAX,EAAmBC,OAAnB,EAA4BtP,IAA5B,EAAkC;IACxC,WAAO,KAAKrC,MAAL,CAAYzH,KAAZ,CAAkBnC,UAAlB,CAA6Bqb,QAA7B,EAAuCC,MAAvC,EAA+CC,OAA/C,EAAwDtP,IAAxD,CAAP;IACH;IAED;IACJ;IACA;IACA;IACA;IACA;;;IACI+W,EAAAA,WAAW,CAACtW,QAAD,EAAWgW,QAAX,EAAqB;IAC5B,WAAO,IAAI4a,OAAJ,CAAY,CAACC,OAAD,EAAUuB,MAAV,KAAqB;IACpC,UAAI,KAAKl1B,MAAL,CAAY/G,OAAhB,EAAyB;IACrB,aAAK+G,MAAL,CAAYoZ,WAAZ,CAAwBtW,QAAxB,EAAkCgW,QAAlC;IACA6a,QAAAA,OAAO;IACV,OAHD,MAGO;IACHuB,QAAAA,MAAM;IACT;IACJ,KAPM,CAAP;IAQH;;IAED9a,EAAAA,iBAAiB,GAAG;IAChB,QAAI,KAAKpa,MAAL,CAAYlG,SAAhB,EAA2B;IACvB,WAAKkG,MAAL,CAAYoa,iBAAZ;IACH;IACJ;IAED;IACJ;IACA;IACA;;;IACI9E,EAAAA,SAAS,GAAG;IACR,WAAO,KAAKtV,MAAL,CAAY/G,OAAnB;IACH;IAED;IACJ;IACA;IACA;;;IACIsc,EAAAA,MAAM,GAAG;IACL,WAAO,KAAKvV,MAAL,CAAY1J,KAAZ,GAAoB,KAAK0J,MAAL,CAAY1J,KAAZ,CAAkBif,MAAtC,GAA+C,IAAtD;IACH;IAED;IACJ;IACA;IACA;;;IACIwD,EAAAA,WAAW,GAAG;IACV,WAAO,KAAK/Y,MAAL,CAAYga,QAAZ,CAAqBlgB,SAA5B;IACH;;IAjf2B;;IAufhC4L,MAAM,CAACiwB,SAAP,GAAmBA,SAAnB;;;;;;;;"} \ No newline at end of file diff --git a/src/constant/index.js b/src/constant/index.js index 0f76d572..5498ccb9 100644 --- a/src/constant/index.js +++ b/src/constant/index.js @@ -19,12 +19,12 @@ export const DEFAULT_PLAYER_OPTIONS = { debug: false, hotKey: false, // 快捷键 loadingTimeout: 10, // loading timeout - heartTimeout: 10, // heart timeout + heartTimeout: 5, // heart timeout timeout: 10, // second - loadingTimeoutRetry: false, // loading timeout retry - heartTimeoutRetry: false, // heart timeout retry - loadingTimeoutRetryTimes: 3, // loading timeout retry fail times - heartTimeoutRetryTimes: 3, // heart timeout retry fail times + loadingTimeoutReplay: false, // loading timeout replay + heartTimeoutReplay: false,// heart timeout replay。 + loadingTimeoutReplayTimes: 3, // loading timeout replay fail times + heartTimeoutReplayTimes: 3, // heart timeout replay fail times supportDblclickFullscreen: false, showBandwidth: false, // keepScreenOn: false, @@ -53,9 +53,8 @@ export const DEFAULT_PLAYER_OPTIONS = { useWCS: false, // useMSE: false, // useOffscreen: false, // - autoWasm: false, // 自动降级到 wasm 模式 - heartTimeoutReplay: false,// 心跳超时之后自动再播放。 - wasmDecodeErrorReplay: false, // 解码失败重新播放。 + autoWasm: true, // 自动降级到 wasm 模式 + wasmDecodeErrorReplay: true, // 解码失败重新播放。 openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152 } diff --git a/src/jessibuca.js b/src/jessibuca.js index 439f377c..5c85adeb 100644 --- a/src/jessibuca.js +++ b/src/jessibuca.js @@ -47,7 +47,8 @@ class Jessibuca extends Emitter { this._opt = _opt; this.$container = $container; - this.href = null; + this._loadingTimeoutReplayTimes = 0; + this._heartTimeoutReplayTimes = 0; this.events = new Events(this); this._initPlayer($container, _opt); } @@ -56,8 +57,19 @@ class Jessibuca extends Emitter { * */ destroy() { - this.player.destroy(); - this.player = null; + if (this.events) { + this.events.destroy(); + this.events = null; + } + + if (this.player) { + this.player.destroy(); + this.player = null; + } + this.$container = null; + this._opt = null; + this._loadingTimeoutReplayTimes = 0; + this._heartTimeoutReplayTimes = 0; this.off(); } @@ -317,16 +329,33 @@ class Jessibuca extends Emitter { } }) + // 监听 delay timeout this.player.once(EVENTS.delayTimeout, () => { - if (this.player._opt.heartTimeoutReplay) { + if (this.player._opt.heartTimeoutReplay && this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes) { + this._heartTimeoutReplayTimes += 1; + this.play(url).then(() => { + // resolve(); + this._heartTimeoutReplayTimes = 0; + }).catch(() => { + // reject(); + }); + } + }) + + // 监听 loading timeout + this.player.once(EVENTS.loadingTimeout, () => { + if (this.player._opt.loadingTimeoutReplay && this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes) { + this._loadingTimeoutReplayTimes += 1; this.play(url).then(() => { // resolve(); + this._loadingTimeoutReplayTimes = 0; }).catch(() => { // reject(); }); } }) + if (this.hasLoaded()) { this.player.play(url).then(() => { resolve(); diff --git a/src/utils/events.js b/src/utils/events.js index ad782ccb..c8aed02c 100644 --- a/src/utils/events.js +++ b/src/utils/events.js @@ -19,7 +19,7 @@ export default class Events { } destroy() { - this.master.debug.log(`Events`, 'destroy'); + this.master.debug && this.master.debug.log(`Events`, 'destroy'); this.destroys.forEach(event => event()); } }